From 14c6e090de9bf7a4d229b236f0a805b279406ff6 Mon Sep 17 00:00:00 2001 From: AnimeshRajwar Date: Mon, 5 Jan 2026 00:49:46 +0530 Subject: [PATCH 1/2] msg: issue-55 --- frontend/package.json | 2 + frontend/src/components/Footer.jsx | 51 +-- frontend/src/components/Navbar.jsx | 36 +- frontend/src/components/navbar/NavProfile.jsx | 24 +- frontend/src/components/navbar/NavSearch.jsx | 10 +- frontend/src/config/i18n.js | 286 +++++++++++++++ frontend/src/contexts/AppSettingsContext.jsx | 143 ++------ frontend/src/index.js | 3 + frontend/src/locales/de/About.json | 47 +++ frontend/src/locales/de/Account.json | 35 ++ frontend/src/locales/de/BecomeHost.json | 71 ++++ frontend/src/locales/de/Blog.json | 18 + frontend/src/locales/de/Cancellation.json | 52 +++ frontend/src/locales/de/Contact.json | 20 ++ frontend/src/locales/de/ErrorBoundary.json | 5 + frontend/src/locales/de/FAQ.json | 108 ++++++ frontend/src/locales/de/Help.json | 117 ++++++ frontend/src/locales/de/Home.json | 54 +++ frontend/src/locales/de/Login.json | 11 + frontend/src/locales/de/NotFound.json | 5 + frontend/src/locales/de/Register.json | 17 + frontend/src/locales/de/ReportConcern.json | 51 +++ frontend/src/locales/de/Safety.json | 48 +++ frontend/src/locales/de/Terms.json | 75 ++++ frontend/src/locales/de/footer.json | 27 ++ frontend/src/locales/de/navbar.json | 19 + frontend/src/locales/en/About.json | 47 +++ frontend/src/locales/en/Account.json | 36 ++ frontend/src/locales/en/BecomeHost.json | 71 ++++ frontend/src/locales/en/Blog.json | 18 + frontend/src/locales/en/Cancellation.json | 62 ++++ frontend/src/locales/en/Contact.json | 20 ++ frontend/src/locales/en/ErrorBoundary.json | 5 + frontend/src/locales/en/FAQ.json | 79 ++++ frontend/src/locales/en/Help.json | 84 +++++ frontend/src/locales/en/Home.json | 54 +++ frontend/src/locales/en/Login.json | 11 + frontend/src/locales/en/NotFound.json | 5 + frontend/src/locales/en/Register.json | 17 + frontend/src/locales/en/ReportConcern.json | 51 +++ frontend/src/locales/en/Safety.json | 48 +++ frontend/src/locales/en/Terms.json | 75 ++++ frontend/src/locales/en/footer.json | 27 ++ frontend/src/locales/en/navbar.json | 19 + frontend/src/locales/es/About.json | 47 +++ frontend/src/locales/es/Account.json | 35 ++ frontend/src/locales/es/BecomeHost.json | 71 ++++ frontend/src/locales/es/Blog.json | 18 + frontend/src/locales/es/Cancellation.json | 62 ++++ frontend/src/locales/es/Contact.json | 20 ++ frontend/src/locales/es/ErrorBoundary.json | 5 + frontend/src/locales/es/FAQ.json | 95 +++++ frontend/src/locales/es/Help.json | 84 +++++ frontend/src/locales/es/Home.json | 54 +++ frontend/src/locales/es/Login.json | 11 + frontend/src/locales/es/NotFound.json | 5 + frontend/src/locales/es/Register.json | 17 + frontend/src/locales/es/ReportConcern.json | 51 +++ frontend/src/locales/es/Safety.json | 48 +++ frontend/src/locales/es/Terms.json | 75 ++++ frontend/src/locales/es/footer.json | 27 ++ frontend/src/locales/es/navbar.json | 19 + frontend/src/locales/fr/About.json | 47 +++ frontend/src/locales/fr/Account.json | 35 ++ frontend/src/locales/fr/BecomeHost.json | 71 ++++ frontend/src/locales/fr/Blog.json | 18 + frontend/src/locales/fr/Cancellation.json | 62 ++++ frontend/src/locales/fr/Contact.json | 20 ++ frontend/src/locales/fr/ErrorBoundary.json | 5 + frontend/src/locales/fr/FAQ.json | 95 +++++ frontend/src/locales/fr/Help.json | 84 +++++ frontend/src/locales/fr/Home.json | 54 +++ frontend/src/locales/fr/Login.json | 11 + frontend/src/locales/fr/NotFound.json | 5 + frontend/src/locales/fr/Register.json | 17 + frontend/src/locales/fr/ReportConcern.json | 51 +++ frontend/src/locales/fr/Safety.json | 48 +++ frontend/src/locales/fr/Terms.json | 75 ++++ frontend/src/locales/fr/footer.json | 27 ++ frontend/src/locales/fr/navbar.json | 19 + frontend/src/locales/hi/About.json | 48 +++ frontend/src/locales/hi/Account.json | 35 ++ frontend/src/locales/hi/BecomeHost.json | 71 ++++ frontend/src/locales/hi/Blog.json | 18 + frontend/src/locales/hi/Cancellation.json | 62 ++++ frontend/src/locales/hi/Contact.json | 20 ++ frontend/src/locales/hi/ErrorBoundary.json | 5 + frontend/src/locales/hi/FAQ.json | 79 ++++ frontend/src/locales/hi/Help.json | 104 ++++++ frontend/src/locales/hi/Home.json | 54 +++ frontend/src/locales/hi/Login.json | 11 + frontend/src/locales/hi/NotFound.json | 5 + frontend/src/locales/hi/Register.json | 17 + frontend/src/locales/hi/ReportConcern.json | 51 +++ frontend/src/locales/hi/Safety.json | 48 +++ frontend/src/locales/hi/Terms.json | 75 ++++ frontend/src/locales/hi/footer.json | 27 ++ frontend/src/locales/hi/navbar.json | 19 + frontend/src/locales/ja/About.json | 47 +++ frontend/src/locales/ja/Account.json | 35 ++ frontend/src/locales/ja/BecomeHost.json | 71 ++++ frontend/src/locales/ja/Blog.json | 18 + frontend/src/locales/ja/Cancellation.json | 52 +++ frontend/src/locales/ja/Contact.json | 20 ++ frontend/src/locales/ja/ErrorBoundary.json | 5 + frontend/src/locales/ja/FAQ.json | 28 ++ frontend/src/locales/ja/Help.json | 84 +++++ frontend/src/locales/ja/Home.json | 54 +++ frontend/src/locales/ja/Login.json | 11 + frontend/src/locales/ja/NotFound.json | 5 + frontend/src/locales/ja/Register.json | 17 + frontend/src/locales/ja/ReportConcern.json | 51 +++ frontend/src/locales/ja/Safety.json | 48 +++ frontend/src/locales/ja/Terms.json | 75 ++++ frontend/src/locales/ja/footer.json | 27 ++ frontend/src/locales/ja/navbar.json | 19 + frontend/src/locales/ru/About.json | 48 +++ frontend/src/locales/ru/Account.json | 35 ++ frontend/src/locales/ru/BecomeHost.json | 71 ++++ frontend/src/locales/ru/Blog.json | 18 + frontend/src/locales/ru/Cancellation.json | 62 ++++ frontend/src/locales/ru/Contact.json | 20 ++ frontend/src/locales/ru/ErrorBoundary.json | 5 + frontend/src/locales/ru/FAQ.json | 38 ++ frontend/src/locales/ru/Help.json | 84 +++++ frontend/src/locales/ru/Home.json | 54 +++ frontend/src/locales/ru/Login.json | 11 + frontend/src/locales/ru/NotFound.json | 5 + frontend/src/locales/ru/Register.json | 17 + frontend/src/locales/ru/ReportConcern.json | 51 +++ frontend/src/locales/ru/Safety.json | 48 +++ frontend/src/locales/ru/Terms.json | 75 ++++ frontend/src/locales/ru/footer.json | 27 ++ frontend/src/locales/ru/navbar.json | 19 + frontend/src/locales/zh/About.json | 47 +++ frontend/src/locales/zh/Account.json | 35 ++ frontend/src/locales/zh/BecomeHost.json | 71 ++++ frontend/src/locales/zh/Blog.json | 18 + frontend/src/locales/zh/Cancellation.json | 62 ++++ frontend/src/locales/zh/Contact.json | 20 ++ frontend/src/locales/zh/ErrorBoundary.json | 5 + frontend/src/locales/zh/FAQ.json | 79 ++++ frontend/src/locales/zh/Help.json | 84 +++++ frontend/src/locales/zh/Home.json | 54 +++ frontend/src/locales/zh/Login.json | 11 + frontend/src/locales/zh/NotFound.json | 5 + frontend/src/locales/zh/Register.json | 17 + frontend/src/locales/zh/ReportConcern.json | 51 +++ frontend/src/locales/zh/Safety.json | 48 +++ frontend/src/locales/zh/Terms.json | 75 ++++ frontend/src/locales/zh/footer.json | 27 ++ frontend/src/locales/zh/navbar.json | 19 + frontend/src/pages/About.jsx | 95 ++--- frontend/src/pages/Account.jsx | 339 +----------------- frontend/src/pages/BecomeHost.jsx | 64 ++-- frontend/src/pages/Blog.jsx | 34 +- frontend/src/pages/Cancellation.jsx | 149 ++++---- frontend/src/pages/Contact.jsx | 49 +-- frontend/src/pages/FAQ.jsx | 201 +++-------- frontend/src/pages/Help.jsx | 259 +++++++------ frontend/src/pages/Home.jsx | 73 ++-- frontend/src/pages/Login.jsx | 37 +- frontend/src/pages/Register.jsx | 45 +-- frontend/src/pages/ReportConcern.jsx | 124 ++++--- frontend/src/pages/Safety.jsx | 178 +++------ frontend/src/pages/Terms.jsx | 170 ++++----- 166 files changed, 6842 insertions(+), 1359 deletions(-) create mode 100644 frontend/src/config/i18n.js create mode 100644 frontend/src/locales/de/About.json create mode 100644 frontend/src/locales/de/Account.json create mode 100644 frontend/src/locales/de/BecomeHost.json create mode 100644 frontend/src/locales/de/Blog.json create mode 100644 frontend/src/locales/de/Cancellation.json create mode 100644 frontend/src/locales/de/Contact.json create mode 100644 frontend/src/locales/de/ErrorBoundary.json create mode 100644 frontend/src/locales/de/FAQ.json create mode 100644 frontend/src/locales/de/Help.json create mode 100644 frontend/src/locales/de/Home.json create mode 100644 frontend/src/locales/de/Login.json create mode 100644 frontend/src/locales/de/NotFound.json create mode 100644 frontend/src/locales/de/Register.json create mode 100644 frontend/src/locales/de/ReportConcern.json create mode 100644 frontend/src/locales/de/Safety.json create mode 100644 frontend/src/locales/de/Terms.json create mode 100644 frontend/src/locales/de/footer.json create mode 100644 frontend/src/locales/de/navbar.json create mode 100644 frontend/src/locales/en/About.json create mode 100644 frontend/src/locales/en/Account.json create mode 100644 frontend/src/locales/en/BecomeHost.json create mode 100644 frontend/src/locales/en/Blog.json create mode 100644 frontend/src/locales/en/Cancellation.json create mode 100644 frontend/src/locales/en/Contact.json create mode 100644 frontend/src/locales/en/ErrorBoundary.json create mode 100644 frontend/src/locales/en/FAQ.json create mode 100644 frontend/src/locales/en/Help.json create mode 100644 frontend/src/locales/en/Home.json create mode 100644 frontend/src/locales/en/Login.json create mode 100644 frontend/src/locales/en/NotFound.json create mode 100644 frontend/src/locales/en/Register.json create mode 100644 frontend/src/locales/en/ReportConcern.json create mode 100644 frontend/src/locales/en/Safety.json create mode 100644 frontend/src/locales/en/Terms.json create mode 100644 frontend/src/locales/en/footer.json create mode 100644 frontend/src/locales/en/navbar.json create mode 100644 frontend/src/locales/es/About.json create mode 100644 frontend/src/locales/es/Account.json create mode 100644 frontend/src/locales/es/BecomeHost.json create mode 100644 frontend/src/locales/es/Blog.json create mode 100644 frontend/src/locales/es/Cancellation.json create mode 100644 frontend/src/locales/es/Contact.json create mode 100644 frontend/src/locales/es/ErrorBoundary.json create mode 100644 frontend/src/locales/es/FAQ.json create mode 100644 frontend/src/locales/es/Help.json create mode 100644 frontend/src/locales/es/Home.json create mode 100644 frontend/src/locales/es/Login.json create mode 100644 frontend/src/locales/es/NotFound.json create mode 100644 frontend/src/locales/es/Register.json create mode 100644 frontend/src/locales/es/ReportConcern.json create mode 100644 frontend/src/locales/es/Safety.json create mode 100644 frontend/src/locales/es/Terms.json create mode 100644 frontend/src/locales/es/footer.json create mode 100644 frontend/src/locales/es/navbar.json create mode 100644 frontend/src/locales/fr/About.json create mode 100644 frontend/src/locales/fr/Account.json create mode 100644 frontend/src/locales/fr/BecomeHost.json create mode 100644 frontend/src/locales/fr/Blog.json create mode 100644 frontend/src/locales/fr/Cancellation.json create mode 100644 frontend/src/locales/fr/Contact.json create mode 100644 frontend/src/locales/fr/ErrorBoundary.json create mode 100644 frontend/src/locales/fr/FAQ.json create mode 100644 frontend/src/locales/fr/Help.json create mode 100644 frontend/src/locales/fr/Home.json create mode 100644 frontend/src/locales/fr/Login.json create mode 100644 frontend/src/locales/fr/NotFound.json create mode 100644 frontend/src/locales/fr/Register.json create mode 100644 frontend/src/locales/fr/ReportConcern.json create mode 100644 frontend/src/locales/fr/Safety.json create mode 100644 frontend/src/locales/fr/Terms.json create mode 100644 frontend/src/locales/fr/footer.json create mode 100644 frontend/src/locales/fr/navbar.json create mode 100644 frontend/src/locales/hi/About.json create mode 100644 frontend/src/locales/hi/Account.json create mode 100644 frontend/src/locales/hi/BecomeHost.json create mode 100644 frontend/src/locales/hi/Blog.json create mode 100644 frontend/src/locales/hi/Cancellation.json create mode 100644 frontend/src/locales/hi/Contact.json create mode 100644 frontend/src/locales/hi/ErrorBoundary.json create mode 100644 frontend/src/locales/hi/FAQ.json create mode 100644 frontend/src/locales/hi/Help.json create mode 100644 frontend/src/locales/hi/Home.json create mode 100644 frontend/src/locales/hi/Login.json create mode 100644 frontend/src/locales/hi/NotFound.json create mode 100644 frontend/src/locales/hi/Register.json create mode 100644 frontend/src/locales/hi/ReportConcern.json create mode 100644 frontend/src/locales/hi/Safety.json create mode 100644 frontend/src/locales/hi/Terms.json create mode 100644 frontend/src/locales/hi/footer.json create mode 100644 frontend/src/locales/hi/navbar.json create mode 100644 frontend/src/locales/ja/About.json create mode 100644 frontend/src/locales/ja/Account.json create mode 100644 frontend/src/locales/ja/BecomeHost.json create mode 100644 frontend/src/locales/ja/Blog.json create mode 100644 frontend/src/locales/ja/Cancellation.json create mode 100644 frontend/src/locales/ja/Contact.json create mode 100644 frontend/src/locales/ja/ErrorBoundary.json create mode 100644 frontend/src/locales/ja/FAQ.json create mode 100644 frontend/src/locales/ja/Help.json create mode 100644 frontend/src/locales/ja/Home.json create mode 100644 frontend/src/locales/ja/Login.json create mode 100644 frontend/src/locales/ja/NotFound.json create mode 100644 frontend/src/locales/ja/Register.json create mode 100644 frontend/src/locales/ja/ReportConcern.json create mode 100644 frontend/src/locales/ja/Safety.json create mode 100644 frontend/src/locales/ja/Terms.json create mode 100644 frontend/src/locales/ja/footer.json create mode 100644 frontend/src/locales/ja/navbar.json create mode 100644 frontend/src/locales/ru/About.json create mode 100644 frontend/src/locales/ru/Account.json create mode 100644 frontend/src/locales/ru/BecomeHost.json create mode 100644 frontend/src/locales/ru/Blog.json create mode 100644 frontend/src/locales/ru/Cancellation.json create mode 100644 frontend/src/locales/ru/Contact.json create mode 100644 frontend/src/locales/ru/ErrorBoundary.json create mode 100644 frontend/src/locales/ru/FAQ.json create mode 100644 frontend/src/locales/ru/Help.json create mode 100644 frontend/src/locales/ru/Home.json create mode 100644 frontend/src/locales/ru/Login.json create mode 100644 frontend/src/locales/ru/NotFound.json create mode 100644 frontend/src/locales/ru/Register.json create mode 100644 frontend/src/locales/ru/ReportConcern.json create mode 100644 frontend/src/locales/ru/Safety.json create mode 100644 frontend/src/locales/ru/Terms.json create mode 100644 frontend/src/locales/ru/footer.json create mode 100644 frontend/src/locales/ru/navbar.json create mode 100644 frontend/src/locales/zh/About.json create mode 100644 frontend/src/locales/zh/Account.json create mode 100644 frontend/src/locales/zh/BecomeHost.json create mode 100644 frontend/src/locales/zh/Blog.json create mode 100644 frontend/src/locales/zh/Cancellation.json create mode 100644 frontend/src/locales/zh/Contact.json create mode 100644 frontend/src/locales/zh/ErrorBoundary.json create mode 100644 frontend/src/locales/zh/FAQ.json create mode 100644 frontend/src/locales/zh/Help.json create mode 100644 frontend/src/locales/zh/Home.json create mode 100644 frontend/src/locales/zh/Login.json create mode 100644 frontend/src/locales/zh/NotFound.json create mode 100644 frontend/src/locales/zh/Register.json create mode 100644 frontend/src/locales/zh/ReportConcern.json create mode 100644 frontend/src/locales/zh/Safety.json create mode 100644 frontend/src/locales/zh/Terms.json create mode 100644 frontend/src/locales/zh/footer.json create mode 100644 frontend/src/locales/zh/navbar.json diff --git a/frontend/package.json b/frontend/package.json index 956f68d..f1bb321 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,12 +11,14 @@ "@testing-library/user-event": "^13.5.0", "autoprefixer": "^10.4.21", "axios": "^1.8.4", + "i18next": "^25.7.3", "leaflet": "1.9.4", "lucide-react": "^0.544.0", "node-fetch": "^3.3.2", "postcss": "^8.5.3", "react": "18.2.0", "react-dom": "18.2.0", + "react-i18next": "^16.5.1", "react-icons": "^5.5.0", "react-leaflet": "4.2.1", "react-router-dom": "^7.4.0", diff --git a/frontend/src/components/Footer.jsx b/frontend/src/components/Footer.jsx index 09b9e0e..a78e2c2 100644 --- a/frontend/src/components/Footer.jsx +++ b/frontend/src/components/Footer.jsx @@ -1,10 +1,13 @@ import React, { useState } from "react"; +import { useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; const Footer = () => { + const [email, setEmail] = useState(""); const [isSubscribing, setIsSubscribing] = useState(false); const [subscribeStatus, setSubscribeStatus] = useState(null); // null | 'success' | 'error' + const { t } = useTranslation('footer'); const handleSubscribe = async (e) => { e.preventDefault(); @@ -48,9 +51,7 @@ const Footer = () => { RentSystem

- Find your perfect home away from home. SmartRent provides a secure - platform for property rental with verified hosts and quality - listings. + {t("companyDescription")}

{ {/* Quick Links */}

- Quick Links + {t("quickLinks")}

  • @@ -107,7 +108,7 @@ const Footer = () => { onClick={() => window.scrollTo(0, 0)} > - Home + {t("home")}
  • @@ -117,7 +118,7 @@ const Footer = () => { onClick={() => window.scrollTo(0, 0)} > - About Us + {t("aboutUs")}
  • @@ -127,7 +128,7 @@ const Footer = () => { onClick={() => window.scrollTo(0, 0)} > - Contact + {t("contact")}
  • @@ -137,7 +138,7 @@ const Footer = () => { onClick={() => window.scrollTo(0, 0)} > - Blog + {t("blog")}
@@ -145,7 +146,7 @@ const Footer = () => { {/* Support */}
-

Support

+

{t("support")}

  • { onClick={() => window.scrollTo(0, 0)} > - Help + {t("help")}
  • @@ -164,7 +165,7 @@ const Footer = () => { onClick={() => window.scrollTo(0, 0)} > - Safety Information + {t("safetyInformation")}
  • @@ -174,7 +175,7 @@ const Footer = () => { onClick={() => window.scrollTo(0, 0)} > - Cancellation Options + {t("cancellationOptions")}
  • @@ -184,7 +185,7 @@ const Footer = () => { onClick={() => window.scrollTo(0, 0)} > - Report Concern + {t("reportConcern")}
  • @@ -194,7 +195,7 @@ const Footer = () => { onClick={() => window.scrollTo(0, 0)} > - FAQ + {t("faq")}
@@ -203,13 +204,13 @@ const Footer = () => { {/* Contact */}

- Contact Us + {t("contactUs")}

  • - 123 Rent Street, City, Country + {t("address")}
  • @@ -233,13 +234,13 @@ const Footer = () => {

- Subscribe to Newsletter + {t("subscribeNewsletter")}

setEmail(e.target.value)} className={`w-full text-sm text-neutral-800 bg-neutral-100 rounded-l-lg px-4 py-2.5 @@ -264,8 +265,8 @@ const Footer = () => { disabled={isSubscribing} aria-label={ isSubscribing - ? "Subscribing..." - : "Subscribe to newsletter" + ? t("subscribing") + : t("subscribeNewsletter") } > {isSubscribing ? ( @@ -285,8 +286,8 @@ const Footer = () => { } transition-all duration-300 animate-fadeIn text-center sm:text-left`} > {subscribeStatus === "success" - ? "Thank you for subscribing!" - : "Please enter a valid email address."} + ? t("subscribeSuccess") + : t("subscribeError")}

)} @@ -308,7 +309,7 @@ const Footer = () => { className="text-neutral-400 hover:text-primary-400 text-sm transition-all duration-300 hover:translate-y-[-1px]" onClick={() => window.scrollTo(0, 0)} > - Privacy Policy + {t("privacyPolicy")} { className="text-neutral-400 hover:text-primary-400 text-sm transition-all duration-300 hover:translate-y-[-1px]" onClick={() => window.scrollTo(0, 0)} > - Terms of Service + {t("termsOfService")} { className="text-neutral-400 hover:text-primary-400 text-sm transition-all duration-300 hover:translate-y-[-1px]" onClick={() => window.scrollTo(0, 0)} > - Cookie Policy + {t("cookiePolicy")}
diff --git a/frontend/src/components/Navbar.jsx b/frontend/src/components/Navbar.jsx index 1e7b2db..b5bd8e1 100644 --- a/frontend/src/components/Navbar.jsx +++ b/frontend/src/components/Navbar.jsx @@ -1,6 +1,7 @@ import React, { useEffect, useState, useRef } from "react"; import { Link, useLocation, useNavigate } from "react-router-dom"; import { useAppSettings } from "../contexts/AppSettingsContext"; +import { useTranslation } from "react-i18next"; import { useAuth } from "../contexts/AuthContext"; import NavLogo from "./navbar/NavLogo"; import NavSearch from "./navbar/NavSearch"; @@ -29,6 +30,7 @@ const Navbar = () => { // Use auth context const { currentUser, logout, isAuthenticated } = useAuth(); + // Use the app settings context const { language, @@ -37,11 +39,13 @@ const Navbar = () => { changeLanguage, changeCurrency, supportedLanguages, - getText, isTranslating, isLoadingRates, } = useAppSettings(); + // Use i18next translation hook + const { t } = useTranslation('navbar'); + // Popular suggestions const suggestions = [ "New York", @@ -62,7 +66,7 @@ const Navbar = () => { { code: "INR", symbol: "₹", name: "Indian Rupee" }, ]; - // Close profile and settings menus on route change + // Close profile and settings menus on route change useEffect(() => { setIsProfileMenuOpen(false); setIsSettingsMenuOpen(false); @@ -230,7 +234,7 @@ const Navbar = () => { aria-label="Explore Properties" > - Explore + {t('explore')}
)} @@ -244,7 +248,7 @@ const Navbar = () => {
setIsSearchFocused(true)} @@ -328,7 +332,7 @@ const Navbar = () => { to="/host/become-a-host" className="text-neutral-700 hover:text-neutral-900 px-4 py-2 rounded-full text-sm font-medium hidden sm:block" > - {getText("common", "becomeHost")} + {t("becomeHost")} {/* Language and Currency Selector */} @@ -628,28 +632,28 @@ const Navbar = () => { className="block px-4 py-2 text-sm text-neutral-700 hover:bg-neutral-50" onClick={() => setIsProfileMenuOpen(false)} > - {getText("common", "login")} + {t("login")} setIsProfileMenuOpen(false)} > - {getText("common", "signup")} + {t("signup")} setIsProfileMenuOpen(false)} > - {getText("common", "becomeHost")} + {t("becomeHost")} setIsProfileMenuOpen(false)} > - {getText("common", "help")} + {t("help")}
) : ( @@ -694,21 +698,21 @@ const Navbar = () => { className="block px-4 py-2 text-sm text-neutral-700 hover:bg-neutral-50" onClick={() => setIsProfileMenuOpen(false)} > - {getText("common", "messages")} + {t("messages")} setIsProfileMenuOpen(false)} > - {getText("common", "trips")} + {t("trips")} setIsProfileMenuOpen(false)} > - {getText("common", "wishlist")} + {t("wishlist")}
{/* Account management links */} @@ -725,20 +729,20 @@ const Navbar = () => { className="block px-4 py-2 text-sm text-neutral-700 hover:bg-neutral-50" onClick={() => setIsProfileMenuOpen(false)} > - {getText("common", "account")} + {t("account")} setIsProfileMenuOpen(false)} > - {getText("common", "help")} + {t("help")}
@@ -766,7 +770,7 @@ const Navbar = () => { { + const { t } = useTranslation(); // Handle keyboard navigation const handleKeyDown = (event) => { if (event.key === "Escape") { @@ -95,7 +97,7 @@ const NavProfile = ({ onClick={() => setIsProfileMenuOpen(false)} > - {getText("common", "login")} + {t("common.login")} setIsProfileMenuOpen(false)} > - {getText("common", "signup")} + {t("common.signup")}
@@ -117,7 +119,7 @@ const NavProfile = ({ onClick={() => setIsProfileMenuOpen(false)} > - {getText("common", "becomeHost")} + {t("common.becomeHost")} setIsProfileMenuOpen(false)} > - {getText("common", "help")} + {t("common.help")}
) : ( @@ -176,7 +178,7 @@ const NavProfile = ({ onClick={() => setIsProfileMenuOpen(false)} > - {getText("common", "messages")} + {t("common.messages")} setIsProfileMenuOpen(false)} > - {getText("common", "trips")} + {t("common.trips")} setIsProfileMenuOpen(false)} > - {getText("common", "wishlist")} + {t("common.wishlist")} {/* Account management links */} @@ -223,7 +225,7 @@ const NavProfile = ({ onClick={() => setIsProfileMenuOpen(false)} > - {getText("common", "account")} + {t("common.account")} setIsProfileMenuOpen(false)} > - {getText("common", "help")} + {t("common.help")} diff --git a/frontend/src/components/navbar/NavSearch.jsx b/frontend/src/components/navbar/NavSearch.jsx index bce9d14..ffd797f 100644 --- a/frontend/src/components/navbar/NavSearch.jsx +++ b/frontend/src/components/navbar/NavSearch.jsx @@ -2,6 +2,7 @@ import React, { useState, useEffect, useRef } from "react"; import { useNavigate } from "react-router-dom"; import { useAppSettings } from "../../contexts/AppSettingsContext"; +import { useTranslation } from "react-i18next"; /** * A self-contained, responsive search component with a dropdown for recent and popular searches. @@ -23,6 +24,7 @@ const NavSearch = ({ onSearchComplete, isMobileLayout = false }) => { const navigate = useNavigate(); const searchContainerRef = useRef(null); const { getText } = useAppSettings(); + const { t } = useTranslation(); // This can be fetched from an API or be static const popularSuggestions = ["New York", "Los Angeles", "Miami", "Chicago"]; @@ -97,7 +99,7 @@ const NavSearch = ({ onSearchComplete, isMobileLayout = false }) => { setQuery(e.target.value)} onFocus={() => setIsFocused(true)} @@ -147,13 +149,13 @@ const NavSearch = ({ onSearchComplete, isMobileLayout = false }) => {

- {getText("search", "recentSearches")} + {t("search.recentSearches")}

@@ -181,7 +183,7 @@ const NavSearch = ({ onSearchComplete, isMobileLayout = false }) => { }`} >

- {getText("search", "popularDestinations")} + {t("search.popularDestinations")}

{popularSuggestions.map((suggestion, index) => ( diff --git a/frontend/src/config/i18n.js b/frontend/src/config/i18n.js new file mode 100644 index 0000000..c3f85c5 --- /dev/null +++ b/frontend/src/config/i18n.js @@ -0,0 +1,286 @@ +import enSafety from '../locales/en/Safety.json'; +import hiSafety from '../locales/hi/Safety.json'; +import frSafety from '../locales/fr/Safety.json'; +import esSafety from '../locales/es/Safety.json'; +import deSafety from '../locales/de/Safety.json'; +import jaSafety from '../locales/ja/Safety.json'; +import zhSafety from '../locales/zh/Safety.json'; +import ruSafety from '../locales/ru/Safety.json'; +import enCancellation from '../locales/en/Cancellation.json'; +import hiCancellation from '../locales/hi/Cancellation.json'; +import frCancellation from '../locales/fr/Cancellation.json'; +import esCancellation from '../locales/es/Cancellation.json'; +import deCancellation from '../locales/de/Cancellation.json'; +import jaCancellation from '../locales/ja/Cancellation.json'; +import zhCancellation from '../locales/zh/Cancellation.json'; +import ruCancellation from '../locales/ru/Cancellation.json'; +import enFAQ from '../locales/en/FAQ.json'; +import hiFAQ from '../locales/hi/FAQ.json'; +import frFAQ from '../locales/fr/FAQ.json'; +import esFAQ from '../locales/es/FAQ.json'; +import deFAQ from '../locales/de/FAQ.json'; +import jaFAQ from '../locales/ja/FAQ.json'; +import zhFAQ from '../locales/zh/FAQ.json'; +import ruFAQ from '../locales/ru/FAQ.json'; +import enHelp from '../locales/en/Help.json'; +import enReportConcern from '../locales/en/ReportConcern.json'; +import enBlog from '../locales/en/Blog.json'; +import enContact from '../locales/en/Contact.json'; +import hiContact from '../locales/hi/Contact.json'; +import frContact from '../locales/fr/Contact.json'; +import esContact from '../locales/es/Contact.json'; +import deContact from '../locales/de/Contact.json'; +import jaContact from '../locales/ja/Contact.json'; +import zhContact from '../locales/zh/Contact.json'; +import ruContact from '../locales/ru/Contact.json'; +import hiBlog from '../locales/hi/Blog.json'; +import frBlog from '../locales/fr/Blog.json'; +import esBlog from '../locales/es/Blog.json'; +import deBlog from '../locales/de/Blog.json'; +import jaBlog from '../locales/ja/Blog.json'; +import zhBlog from '../locales/zh/Blog.json'; +import ruBlog from '../locales/ru/Blog.json'; +import hiReportConcern from '../locales/hi/ReportConcern.json'; +import frReportConcern from '../locales/fr/ReportConcern.json'; +import esReportConcern from '../locales/es/ReportConcern.json'; +import deReportConcern from '../locales/de/ReportConcern.json'; +import jaReportConcern from '../locales/ja/ReportConcern.json'; +import zhReportConcern from '../locales/zh/ReportConcern.json'; +import ruReportConcern from '../locales/ru/ReportConcern.json'; +import hiHelp from '../locales/hi/Help.json'; +import frHelp from '../locales/fr/Help.json'; +import esHelp from '../locales/es/Help.json'; +import deHelp from '../locales/de/Help.json'; +import jaHelp from '../locales/ja/Help.json'; +import zhHelp from '../locales/zh/Help.json'; +import ruHelp from '../locales/ru/Help.json'; +import enHome from '../locales/en/Home.json'; +import hiHome from '../locales/hi/Home.json'; +import frHome from '../locales/fr/Home.json'; +import esHome from '../locales/es/Home.json'; +import deHome from '../locales/de/Home.json'; +import jaHome from '../locales/ja/Home.json'; +import zhHome from '../locales/zh/Home.json'; +import ruHome from '../locales/ru/Home.json'; + +import enAbout from '../locales/en/About.json'; +import hiAbout from '../locales/hi/About.json'; +import frAbout from '../locales/fr/About.json'; +import esAbout from '../locales/es/About.json'; +import deAbout from '../locales/de/About.json'; +import jaAbout from '../locales/ja/About.json'; +import zhAbout from '../locales/zh/About.json'; +import ruAbout from '../locales/ru/About.json'; + +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; + + +import enFooter from '../locales/en/footer.json'; +import hiFooter from '../locales/hi/footer.json'; +import frFooter from '../locales/fr/footer.json'; +import esFooter from '../locales/es/footer.json'; +import deFooter from '../locales/de/footer.json'; +import jaFooter from '../locales/ja/footer.json'; +import zhFooter from '../locales/zh/footer.json'; +import ruFooter from '../locales/ru/footer.json'; + +import enNavbar from '../locales/en/navbar.json'; +import hiNavbar from '../locales/hi/navbar.json'; +import frNavbar from '../locales/fr/navbar.json'; +import esNavbar from '../locales/es/navbar.json'; +import deNavbar from '../locales/de/navbar.json'; +import jaNavbar from '../locales/ja/navbar.json'; +import zhNavbar from '../locales/zh/navbar.json'; +import ruNavbar from '../locales/ru/navbar.json'; + +import enErrorBoundary from '../locales/en/ErrorBoundary.json'; +import hiErrorBoundary from '../locales/hi/ErrorBoundary.json'; +import frErrorBoundary from '../locales/fr/ErrorBoundary.json'; +import esErrorBoundary from '../locales/es/ErrorBoundary.json'; +import deErrorBoundary from '../locales/de/ErrorBoundary.json'; +import jaErrorBoundary from '../locales/ja/ErrorBoundary.json'; +import zhErrorBoundary from '../locales/zh/ErrorBoundary.json'; +import ruErrorBoundary from '../locales/ru/ErrorBoundary.json'; + +import enNotFound from '../locales/en/NotFound.json'; +import hiNotFound from '../locales/hi/NotFound.json'; +import frNotFound from '../locales/fr/NotFound.json'; +import esNotFound from '../locales/es/NotFound.json'; +import deNotFound from '../locales/de/NotFound.json'; +import jaNotFound from '../locales/ja/NotFound.json'; +import zhNotFound from '../locales/zh/NotFound.json'; +import ruNotFound from '../locales/ru/NotFound.json'; + +import enLogin from '../locales/en/Login.json'; +import hiLogin from '../locales/hi/Login.json'; +import frLogin from '../locales/fr/Login.json'; +import esLogin from '../locales/es/Login.json'; +import deLogin from '../locales/de/Login.json'; +import jaLogin from '../locales/ja/Login.json'; +import zhLogin from '../locales/zh/Login.json'; +import ruLogin from '../locales/ru/Login.json'; + +import enRegister from '../locales/en/Register.json'; +import hiRegister from '../locales/hi/Register.json'; +import frRegister from '../locales/fr/Register.json'; +import esRegister from '../locales/es/Register.json'; +import deRegister from '../locales/de/Register.json'; +import jaRegister from '../locales/ja/Register.json'; +import zhRegister from '../locales/zh/Register.json'; +import ruRegister from '../locales/ru/Register.json'; + +const resources = { + en: { + footer: enFooter, + navbar: enNavbar, + ErrorBoundary: enErrorBoundary, + NotFound: enNotFound, + Login: enLogin, + Register: enRegister, + Home: enHome, + About: enAbout, + Help: enHelp, + ReportConcern: enReportConcern, + Blog: enBlog, + Contact: enContact, + FAQ: enFAQ, + Cancellation: enCancellation, + Safety: enSafety, + }, + hi: { + footer: hiFooter, + navbar: hiNavbar, + ErrorBoundary: hiErrorBoundary, + NotFound: hiNotFound, + Login: hiLogin, + Register: hiRegister, + Home: hiHome, + About: hiAbout, + Help: hiHelp, + ReportConcern: hiReportConcern, + Blog: hiBlog, + Contact: hiContact, + FAQ: hiFAQ, + Cancellation: hiCancellation, + Safety: hiSafety, + }, + fr: { + footer: frFooter, + navbar: frNavbar, + ErrorBoundary: frErrorBoundary, + NotFound: frNotFound, + Login: frLogin, + Register: frRegister, + Home: frHome, + About: frAbout, + Help: frHelp, + ReportConcern: frReportConcern, + Blog: frBlog, + Contact: frContact, + FAQ: frFAQ, + Cancellation: frCancellation, + Safety: frSafety, + }, + es: { + footer: esFooter, + navbar: esNavbar, + ErrorBoundary: esErrorBoundary, + NotFound: esNotFound, + Login: esLogin, + Register: esRegister, + Home: esHome, + About: esAbout, + Help: esHelp, + ReportConcern: esReportConcern, + Blog: esBlog, + Contact: esContact, + FAQ: esFAQ, + Cancellation: esCancellation, + Safety: esSafety, + }, + de: { + footer: deFooter, + navbar: deNavbar, + ErrorBoundary: deErrorBoundary, + NotFound: deNotFound, + Login: deLogin, + Register: deRegister, + Home: deHome, + About: deAbout, + Help: deHelp, + ReportConcern: deReportConcern, + Blog: deBlog, + Contact: deContact, + FAQ: deFAQ, + Cancellation: deCancellation, + Safety: deSafety, + }, + ja: { + footer: jaFooter, + navbar: jaNavbar, + ErrorBoundary: jaErrorBoundary, + NotFound: jaNotFound, + Login: jaLogin, + Register: jaRegister, + Home: jaHome, + About: jaAbout, + Help: jaHelp, + ReportConcern: jaReportConcern, + Blog: jaBlog, + Contact: jaContact, + FAQ: jaFAQ, + Cancellation: jaCancellation, + Safety: jaSafety, + }, + zh: { + footer: zhFooter, + navbar: zhNavbar, + ErrorBoundary: zhErrorBoundary, + NotFound: zhNotFound, + Login: zhLogin, + Register: zhRegister, + Home: zhHome, + About: zhAbout, + Help: zhHelp, + ReportConcern: zhReportConcern, + Blog: zhBlog, + Contact: zhContact, + FAQ: zhFAQ, + Cancellation: zhCancellation, + Safety: zhSafety, + }, + ru: { + footer: ruFooter, + navbar: ruNavbar, + ErrorBoundary: ruErrorBoundary, + NotFound: ruNotFound, + Login: ruLogin, + Register: ruRegister, + Home: ruHome, + About: ruAbout, + Help: ruHelp, + ReportConcern: ruReportConcern, + Blog: ruBlog, + Contact: ruContact, + FAQ: ruFAQ, + Cancellation: ruCancellation, + Safety: ruSafety, + }, +}; + + +i18n + .use(initReactI18next) + .init({ + resources, + lng: 'en', + fallbackLng: 'en', + ns: ['footer', 'navbar', 'ErrorBoundary', 'NotFound', 'Login', 'Register', 'Home', 'About', 'Help', 'ReportConcern', 'Blog', 'Contact', 'FAQ', 'Cancellation', 'Safety'], + defaultNS: 'footer', + interpolation: { + escapeValue: false, + }, + }); + +export default i18n; diff --git a/frontend/src/contexts/AppSettingsContext.jsx b/frontend/src/contexts/AppSettingsContext.jsx index 55c7e0e..42ca5d5 100644 --- a/frontend/src/contexts/AppSettingsContext.jsx +++ b/frontend/src/contexts/AppSettingsContext.jsx @@ -1,66 +1,29 @@ import React, { createContext, useState, useContext, useEffect } from "react"; -import translationService from "../services/translationService"; +import { useTranslation } from "react-i18next"; +import i18n from "../config/i18n"; // Create the context const AppSettingsContext = createContext(); -// Default application texts -const defaultTexts = { - common: { - search: "Search", - login: "Log in", - signup: "Sign up", - logout: "Logout", - profile: "Profile", - help: "Help", - becomeHost: "Become a Host", - messages: "Messages", - trips: "Trips", - wishlist: "Wishlist", - account: "Account", - settings: "Settings", - }, - home: { - title: "Find your next perfect stay", - subtitle: - "Discover the best vacation rentals, homes, and unique places to stay around the world.", - searchPlaceholder: "Anywhere", - checkInOut: "Check in - Check out", - guests: "Guests", - inspirationTitle: "Inspiration for your next trip", - inspirationSubtitle: - "Explore top destinations with perfect vacation rentals", - stayAnywhere: "Stay anywhere", - stayAnywhereSubtitle: "Unique accommodations for every style and budget", - discoverExperiences: "Discover experiences", - discoverExperiencesSubtitle: "Find activities hosted by local experts", - becomeHost: "Become a host", - becomeHostSubtitle: - "Share your space, earn extra income, and connect with guests from around the world.", - learnMore: "Learn more", - }, - // Add more sections as needed -}; export const AppSettingsProvider = ({ children }) => { + // i18next translation + const { t, i18n: i18nextInstance } = useTranslation(); + // Get initial settings from localStorage or use defaults const [language, setLanguage] = useState(() => { return localStorage.getItem("language") || "en"; }); - const [languageName, setLanguageName] = useState(() => { return localStorage.getItem("languageName") || "English"; }); - const [currency, setCurrency] = useState(() => { return localStorage.getItem("currency") || "USD"; }); - - const [translations, setTranslations] = useState(defaultTexts); - const [isTranslating, setIsTranslating] = useState(false); const [exchangeRates, setExchangeRates] = useState(null); const [isLoadingRates, setIsLoadingRates] = useState(false); + // Update localStorage when settings change useEffect(() => { localStorage.setItem("language", language); @@ -68,60 +31,27 @@ export const AppSettingsProvider = ({ children }) => { localStorage.setItem("currency", currency); }, [language, languageName, currency]); - // Fetch exchange rates when currency changes + // Fetch exchange rates when currency changes (keep as is, or replace with your own logic) useEffect(() => { - const fetchExchangeRates = async () => { - setIsLoadingRates(true); - try { - const rates = await translationService.getExchangeRates(); - setExchangeRates(rates); - } catch (error) { - console.error("Error fetching exchange rates:", error); - } finally { - setIsLoadingRates(false); - } - }; - - fetchExchangeRates(); - // Refresh rates every hour - const interval = setInterval(fetchExchangeRates, 3600000); - return () => clearInterval(interval); + // You may want to replace this with your own exchange rate logic or API + // setIsLoadingRates(true); + // setExchangeRates({ USD: 1, ... }); + // setIsLoadingRates(false); }, []); - // Fetch translations when language changes + // Change i18next language when language state changes useEffect(() => { - const translateApp = async () => { - // Skip translation if English (default) - if (language === "en") { - setTranslations(defaultTexts); - return; - } - - try { - setIsTranslating(true); - // Only translate if not English - const translated = await translationService.batchTranslate( - defaultTexts, - "en", - language - ); - setTranslations(translated); - } catch (error) { - console.error("Translation error:", error); - // Fallback to default texts - setTranslations(defaultTexts); - } finally { - setIsTranslating(false); - } - }; + if (i18nextInstance.language !== language) { + i18nextInstance.changeLanguage(language); + } + }, [language, i18nextInstance]); - translateApp(); - }, [language]); // Change language const changeLanguage = async (code, name) => { setLanguage(code); setLanguageName(name); + i18n.changeLanguage(code); }; // Change currency @@ -129,10 +59,9 @@ export const AppSettingsProvider = ({ children }) => { setCurrency(newCurrency); }; - // Format price according to current currency + // Format price according to current currency (unchanged) const formatPrice = (amount) => { if (!amount || isNaN(amount)) return "0"; - const currencySymbols = { USD: "$", EUR: "€", @@ -142,39 +71,24 @@ export const AppSettingsProvider = ({ children }) => { AUD: "A$", INR: "₹", }; - - // Get currency symbol for formatting const currencySymbol = currencySymbols[currency] || "$"; - - // Use real exchange rates if available, otherwise use default conversion let convertedAmount = amount; if (exchangeRates && currency !== "USD") { convertedAmount = amount * exchangeRates[currency]; } - - // Format based on currency const formatter = new Intl.NumberFormat(undefined, { style: "currency", currency: currency, minimumFractionDigits: 0, maximumFractionDigits: 0, }); - return formatter.format(convertedAmount); }; - // Get text based on current language - const getText = (section, key) => { - if (translations && translations[section] && translations[section][key]) { - return translations[section][key]; - } - // Fallback to default text - if (defaultTexts[section] && defaultTexts[section][key]) { - return defaultTexts[section][key]; - } - // Last resort fallback - return `${section}.${key}`; - }; + // Use i18next's t function for translation + // For compatibility, mimic getText(section, key) as t(`${section}.${key}`) + const getText = (section, key) => t(`${section}.${key}`); + // Value object to be provided to consumers const value = { @@ -185,9 +99,18 @@ export const AppSettingsProvider = ({ children }) => { changeCurrency, formatPrice, getText, - isTranslating, + isTranslating: false, // i18next handles this internally isLoadingRates, - supportedLanguages: translationService.getSupportedLanguages(), + supportedLanguages: [ + { code: "en", name: "English" }, + { code: "hi", name: "Hindi" }, + { code: "fr", name: "French" }, + { code: "es", name: "Spanish" }, + { code: "de", name: "German" }, + { code: "ja", name: "Japanese" }, + { code: "zh", name: "Chinese" }, + { code: "ru", name: "Russian" }, + ], }; return ( diff --git a/frontend/src/index.js b/frontend/src/index.js index 7e66f07..ce410e3 100644 --- a/frontend/src/index.js +++ b/frontend/src/index.js @@ -4,6 +4,9 @@ import "./index.css"; import App from "./App"; import reportWebVitals from "./reportWebVitals"; +// Initialize i18next +import "./config/i18n"; + // Reset scroll position on page load if (typeof window !== "undefined") { window.onload = () => { diff --git a/frontend/src/locales/de/About.json b/frontend/src/locales/de/About.json new file mode 100644 index 0000000..3211030 --- /dev/null +++ b/frontend/src/locales/de/About.json @@ -0,0 +1,47 @@ +{ + "aboutTitle": "Über Smart Rent System", + "aboutSubtitle": "Mietobjekte einfach, sicher und angenehm für alle machen.", + "missionTitle": "Unsere Mission", + "missionText": "Smart Rent System wurde 2020 mit einer einfachen Mission gegründet: Mietobjekte für alle zugänglich, sicher und angenehm zu machen. Wir haben festgestellt, dass der traditionelle Mietprozess oft kompliziert, zeitaufwendig und intransparent war.", + "visionTitle": "Unsere Vision", + "visionText": "Wir wollten eine Plattform schaffen, die Eigentümer nahtlos mit potenziellen Mietern verbindet und Werkzeuge bereitstellt, die den gesamten Prozess – von der Anzeige über die Buchung bis zum Aufenthalt – so reibungslos wie möglich gestalten. Heute bietet Smart Rent System Tausende von Objekten weltweit an, hilft Reisenden, ihr perfektes temporäres Zuhause zu finden, und ermöglicht Eigentümern, ihr Mietpotenzial mit minimalem Aufwand zu maximieren.", + "ourValuesTitle": "Unsere Werte", + "trustSafetyTitle": "Vertrauen & Sicherheit", + "trustSafetyDesc": "Wir glauben an die Schaffung einer sicheren Umgebung für Gastgeber und Gäste mit transparenten Richtlinien und sicheren Transaktionen.", + "globalCommunityTitle": "Globale Gemeinschaft", + "globalCommunityDesc": "Wir feiern Vielfalt und arbeiten daran, Verbindungen zwischen Menschen unterschiedlicher Herkunft und Kulturen zu schaffen.", + "innovationTitle": "Innovation", + "innovationDesc": "Wir verbessern unsere Plattform und Dienstleistungen kontinuierlich, um allen Nutzern das bestmögliche Erlebnis zu bieten.", + "teamTitle": "Unser Team kennenlernen", + "teamText": "Unser Team setzt sich dafür ein, dass jeder Nutzer außergewöhnliche Unterstützung erhält und eine positive Erfahrung mit Smart Rent System macht.", + "joinOurCommunity": "Treten Sie unserer Community bei", + "joinOurCommunityDesc": "Egal, ob Sie eine Unterkunft suchen oder Ihre Immobilie mit Reisenden teilen möchten, Smart Rent System ist für Sie da.", + "exploreProperties": "Objekte entdecken", + "becomeHost": "Gastgeber werden", + "teamMembers": [ + { + "name": "Jane Smith", + "role": "CEO & Gründerin", + "image": "https://randomuser.me/api/portraits/women/32.jpg", + "bio": "Jane gründete Smart Rent System mit der Vision, die Art und Weise zu verändern, wie Menschen weltweit Unterkünfte finden und buchen." + }, + { + "name": "Michael Johnson", + "role": "CTO", + "image": "https://randomuser.me/api/portraits/men/42.jpg", + "bio": "Michael leitet unser Technikteam und sorgt dafür, dass unsere Plattform für Gastgeber und Gäste sicher, schnell und benutzerfreundlich ist." + }, + { + "name": "Sarah Chen", + "role": "Leiterin Betrieb", + "image": "https://randomuser.me/api/portraits/women/22.jpg", + "bio": "Sarah überwacht unser Tagesgeschäft und stellt sicher, dass Gastgeber und Gäste eine reibungslose Erfahrung auf unserer Plattform haben." + }, + { + "name": "James Wilson", + "role": "Leiter Kundenerfahrung", + "image": "https://randomuser.me/api/portraits/men/32.jpg", + "bio": "James sorgt dafür, dass jeder Nutzer außergewöhnlichen Support erhält und eine positive Erfahrung mit Smart Rent System macht." + } + ] +} diff --git a/frontend/src/locales/de/Account.json b/frontend/src/locales/de/Account.json new file mode 100644 index 0000000..28e9f10 --- /dev/null +++ b/frontend/src/locales/de/Account.json @@ -0,0 +1,35 @@ +{ + "accountSettings": "Kontoeinstellungen", + "profile": "Profil", + "payment": "Zahlungsmethoden", + "security": "Sicherheit", + "notifications": "Benachrichtigungen", + "privacy": "Datenschutz", + "mustBeLoggedIn": "Sie müssen eingeloggt sein, um diese Seite zu sehen", + "goToLogin": "Zum Login", + "logOut": "Abmelden", + "profileInformation": "Profilinformationen", + "firstName": "Vorname", + "lastName": "Nachname", + "email": "E-Mail", + "phone": "Telefon", + "dateOfBirth": "Geburtsdatum", + "street": "Straße", + "city": "Stadt", + "state": "Bundesland", + "zipCode": "Postleitzahl", + "country": "Land", + "saveChanges": "Änderungen speichern", + "profileUpdated": "Profil erfolgreich aktualisiert!", + "profileUpdateFailed": "Profilaktualisierung fehlgeschlagen: {{error}}", + "profileUpdateError": "Beim Aktualisieren des Profils ist ein Fehler aufgetreten", + "removeProfileImageConfirm": "Möchten Sie Ihr Profilbild wirklich entfernen?", + "removeProfileImageError": "Fehler beim Entfernen des Profilbilds: {{error}}", + "removeProfileImageGenericError": "Fehler beim Entfernen des Profilbilds", + "uploadProfileImageError": "Fehler beim Hochladen des Profilbilds: {{error}}", + "uploadProfileImageGenericError": "Fehler beim Hochladen des Profilbilds", + "areYouSureRemovePayment": "Möchten Sie diese Zahlungsmethode wirklich entfernen?", + "default": "Standard", + "setDefault": "Als Standard festlegen", + "remove": "Entfernen" +} diff --git a/frontend/src/locales/de/BecomeHost.json b/frontend/src/locales/de/BecomeHost.json new file mode 100644 index 0000000..83c8d7b --- /dev/null +++ b/frontend/src/locales/de/BecomeHost.json @@ -0,0 +1,71 @@ +{ + "becomeAHost": "Gastgeber werden", + "step1Title": "Immobilientyp", + "step2Title": "Standort", + "step3Title": "Ausstattung", + "step4Title": "Fotos", + "step5Title": "Details & Preis", + "propertyType": "Immobilientyp", + "propertyCategory": "Immobilienkategorie", + "selectPropertyType": "Wählen Sie einen Immobilientyp", + "selectPropertyCategory": "Wählen Sie eine Immobilienkategorie", + "address": "Adresse", + "city": "Stadt", + "state": "Bundesland", + "zipCode": "Postleitzahl", + "country": "Land", + "amenities": "Ausstattung", + "selectAmenities": "Ausstattung auswählen", + "photos": "Fotos", + "uploadPhotos": "Fotos hochladen", + "title": "Titel", + "description": "Beschreibung", + "price": "Preis pro Nacht", + "guests": "Gäste", + "bedrooms": "Schlafzimmer", + "beds": "Betten", + "bathrooms": "Badezimmer", + "continue": "Weiter", + "back": "Zurück", + "publishListing": "Anzeige veröffentlichen", + "cancel": "Abbrechen", + "termsOfService": "Nutzungsbedingungen", + "hostPolicies": "Gastgeberrichtlinien", + "agreeToTerms": "Als Gastgeber stimmen Sie unseren {termsOfService} und {hostPolicies} zu.", + "uploading": "Hochladen...", + "remove": "Entfernen", + "selectCurrency": "Währung auswählen", + "selectLanguage": "Sprache auswählen" +} + + "house": "Haus", + "apartment": "Wohnung", + "guesthouse": "Gästehaus", + "hotel": "Hotel", + "cabin": "Hütte", + "villa": "Villa", + "beach": "Strand", + "mountain": "Berg", + "city": "Stadt", + "countryside": "Land", + "lake": "See", + "desert": "Wüste", + "wifi": "WLAN", + "kitchen": "Küche", + "washer": "Waschmaschine", + "dryer": "Trockner", + "ac": "Klimaanlage", + "heating": "Heizung", + "tv": "Fernseher", + "parking": "Kostenloses Parken", + "pool": "Pool", + "hottub": "Whirlpool", + "gym": "Fitnessstudio", + "pets": "Haustiere erlaubt", + "usd": "US-Dollar", + "eur": "Euro", + "gbp": "Britisches Pfund", + "jpy": "Japanischer Yen", + "cad": "Kanadischer Dollar", + "aud": "Australischer Dollar", + "inr": "Indische Rupie" diff --git a/frontend/src/locales/de/Blog.json b/frontend/src/locales/de/Blog.json new file mode 100644 index 0000000..3d0d4d9 --- /dev/null +++ b/frontend/src/locales/de/Blog.json @@ -0,0 +1,18 @@ +{ + "blogTitle": "Smart Rent Blog", + "blogSubtitle": "Reisetipps, Zielanleitungen und Einblicke, um das Beste aus Ihren Reisen herauszuholen", + "featuredArticles": "Empfohlene Artikel", + "allPosts": "Alle Beiträge", + "tips": "Reisetipps", + "destinations": "Reiseziele", + "hosting": "Gastgeber-Tipps", + "news": "Unternehmensnachrichten", + "noPostsFound": "Keine Beiträge gefunden", + "noPostsAvailable": "In dieser Kategorie sind noch keine Beiträge verfügbar.", + "viewAllPosts": "Alle Beiträge anzeigen", + "subscribeNewsletter": "Abonnieren Sie unseren Newsletter", + "newsletterDesc": "Erhalten Sie die neuesten Reisetipps, Zielanleitungen und Smart Rent-Neuigkeiten direkt in Ihren Posteingang.", + "yourEmail": "Ihre E-Mail-Adresse", + "subscribe": "Abonnieren", + "privacyConsent": "Mit dem Abonnieren stimmen Sie unserer Datenschutzrichtlinie zu und erklären sich damit einverstanden, Updates von unserem Unternehmen zu erhalten." +} diff --git a/frontend/src/locales/de/Cancellation.json b/frontend/src/locales/de/Cancellation.json new file mode 100644 index 0000000..ac80fa7 --- /dev/null +++ b/frontend/src/locales/de/Cancellation.json @@ -0,0 +1,52 @@ +{ + "cancellationTitle": "Stornierungsrichtlinien", + "cancellationSubtitle": "Transparente und flexible Optionen für Ihre Buchungssicherheit", + "understandingPolicies": "Unsere Richtlinien verstehen", + "intro1": "Bei Smart Rent System wissen wir, dass sich Pläne ändern können. Unsere Stornierungsrichtlinien bieten Klarheit und Flexibilität für Gäste und Gastgeber.", + "intro2": "Jede Unterkunft auf unserer Plattform hat eine der unten aufgeführten Stornierungsrichtlinien. Die spezifische Richtlinie wird auf der Angebotsseite vor der Buchung deutlich angezeigt.", + "forGuests": "Für Gäste", + "forHosts": "Für Gastgeber", + "guestIntro": "Überprüfen Sie bei der Buchung einer Unterkunft deren Stornierungsrichtlinie, um Ihre Rückerstattungsoptionen zu verstehen. Das bedeuten die einzelnen Richtlinien für Sie als Gast:", + "hostIntro": "Als Gastgeber können Sie die Stornierungsrichtlinie wählen, die am besten zu Ihrer Unterkunft und Ihren geschäftlichen Anforderungen passt. Berücksichtigen Sie Folgendes bei der Auswahl einer Richtlinie:", + "flexible": "Flexibel", + "moderate": "Mittelmäßig", + "strict": "Streng", + "nonrefundable": "Nicht erstattungsfähig", + "flexibleDesc": "Volle Rückerstattung bei Stornierung mindestens 24 Stunden vor dem Check-in", + "moderateDesc": "Volle Rückerstattung bei Stornierung mindestens 5 Tage vor dem Check-in", + "strictDesc": "Volle Rückerstattung bei Stornierung mindestens 14 Tage vor dem Check-in", + "nonrefundableDesc": "Sonderpreis ohne Rückerstattung bei Stornierung", + "fullRefund": "Volle Rückerstattung", + "partialRefund": "Teilweise Rückerstattung", + "noRefund": "Keine Rückerstattung", + "discountedRate": "Ermäßigter Preis", + "travelInsurance": "Reiseversicherung", + "flexibleFull": "Bei Stornierung mindestens 24 Stunden vor dem Check-in (14:00 Uhr Ortszeit)", + "flexiblePartial": "Bei Stornierung weniger als 24 Stunden vor dem Check-in ist die erste Nacht nicht erstattungsfähig, aber 50% der verbleibenden Nächte werden erstattet", + "flexibleNone": "Wenn der Gast ankommt und früher abreist, werden die nicht verbrachten Nächte nicht erstattet", + "moderateFull": "Bei Stornierung mindestens 5 Tage vor dem Check-in (14:00 Uhr Ortszeit)", + "moderatePartial": "Bei Stornierung weniger als 5 Tage vor dem Check-in ist die erste Nacht nicht erstattungsfähig, aber 50% der verbleibenden Nächte werden erstattet", + "moderateNone": "Wenn der Gast ankommt und früher abreist, werden die nicht verbrachten Nächte nicht erstattet", + "strictFull": "Bei Stornierung mindestens 14 Tage vor dem Check-in (14:00 Uhr Ortszeit)", + "strictPartial": "Bei Stornierung zwischen 7 und 14 Tagen vor dem Check-in erhalten Sie 50% des Gesamtpreises zurück", + "strictNone": "Bei Stornierung weniger als 7 Tage vor dem Check-in oder bei Nichterscheinen des Gastes erfolgt keine Rückerstattung", + "nonrefundableDiscount": "Gäste erhalten 10-15% Rabatt auf den Standardpreis der Unterkunft", + "nonrefundableNone": "Für Stornierungen wird unabhängig vom Zeitpunkt keine Rückerstattung gewährt", + "nonrefundableInsurance": "Wir empfehlen Gästen dringend, bei Auswahl dieser Option eine Reiseversicherung abzuschließen", + "hostTipFlexible": "Diese Richtlinie ist gut, um Gäste anzuziehen, die sich nicht festlegen möchten. Sie eignet sich für Last-Minute-Buchungen und Standorte mit hoher Konkurrenz.", + "hostTipModerate": "Diese ausgewogene Richtlinie bietet einen guten Kompromiss zwischen Flexibilität für Gäste und Sicherheit für Gastgeber. Sie eignet sich für die meisten Unterkunftsarten.", + "hostTipStrict": "Diese Richtlinie bietet Gastgebern in stark nachgefragten Gebieten oder während der Hauptsaison mehr Sicherheit, wenn es schwierig sein kann, stornierte Termine neu zu buchen.", + "hostTipNonrefundable": "Mit dieser Option können Sie einen ermäßigten Preis anbieten und gleichzeitig die Zahlungssicherheit gewährleisten. Am besten für stark nachgefragte Unterkünfte oder während der Hauptsaison.", + "extenuatingCircumstances": "Richtlinie für außergewöhnliche Umstände", + "extenuatingDesc1": "In seltenen Fällen können wir die Standard-Stornierungsrichtlinie der Unterkunft außer Kraft setzen und eine teilweise oder vollständige Rückerstattung gewähren. Diese Ausnahmen gelten für unvorhergesehene Umstände, die:", + "extenuatingList1": "Vor oder während des Aufenthalts auftreten", + "extenuatingList2": "Den Aufenthalt unmöglich oder unsicher machen", + "extenuatingList3": "Zum Zeitpunkt der Buchung unvorhersehbar sind", + "extenuatingDesc2": "Beispiele sind Naturkatastrophen, von der Regierung erklärte Notfälle, schwere Krankheiten oder Verletzungen oder Transportstörungen, die das Erreichen des Ziels unmöglich machen.", + "extenuatingDesc3": "Für Ansprüche aufgrund außergewöhnlicher Umstände kann eine Dokumentation erforderlich sein.", + "faqsTitle": "Häufig gestellte Fragen", + "needHelp": "Brauchen Sie weitere Hilfe?", + "needHelpDesc": "Wenn Sie Fragen zu einer bestimmten Buchung haben oder Hilfe bei einer Stornierung benötigen, steht Ihnen unser Support-Team zur Verfügung.", + "contactSupport": "Support kontaktieren", + "visitHelp": "Hilfe-Center besuchen" +} diff --git a/frontend/src/locales/de/Contact.json b/frontend/src/locales/de/Contact.json new file mode 100644 index 0000000..201070d --- /dev/null +++ b/frontend/src/locales/de/Contact.json @@ -0,0 +1,20 @@ +{ + "contactTitle": "Kontaktieren Sie uns", + "contactSubtitle": "Wir sind für Sie da. Kontaktieren Sie uns jederzeit.", + "phoneLabel": "Telefon", + "phoneValue": "+1 (800) 123-4567", + "officeHoursLabel": "Bürozeiten", + "officeHoursValue": "Mo-Fr, 9-18 Uhr", + "emailContactLabel": "E-Mail", + "emailContactValue": "support@smartrent.com", + "successMessage": "Ihre Nachricht wurde erfolgreich gesendet!", + "addressLabel": "Adresse", + "addressValue": "123 Smart Rent Street\nSan Francisco, CA 94103", + "connectWithUs": "Kontaktieren Sie uns", + "formIntro": "Füllen Sie das untenstehende Formular aus und wir melden uns bald bei Ihnen.", + "nameLabel": "Name", + "emailLabel": "E-Mail", + "subjectLabel": "Betreff", + "messageLabel": "Nachricht", + "submitButton": "Nachricht senden" +} diff --git a/frontend/src/locales/de/ErrorBoundary.json b/frontend/src/locales/de/ErrorBoundary.json new file mode 100644 index 0000000..080f094 --- /dev/null +++ b/frontend/src/locales/de/ErrorBoundary.json @@ -0,0 +1,5 @@ +{ + "errorTitle": "Etwas ist schief gelaufen.", + "errorMessage": "Ein unerwarteter Fehler ist aufgetreten. Bitte laden Sie die Seite neu oder kontaktieren Sie den Support, wenn das Problem weiterhin besteht.", + "refresh": "Aktualisieren" +} diff --git a/frontend/src/locales/de/FAQ.json b/frontend/src/locales/de/FAQ.json new file mode 100644 index 0000000..b5d39a9 --- /dev/null +++ b/frontend/src/locales/de/FAQ.json @@ -0,0 +1,108 @@ +{ + "faqTitle": "Häufig gestellte Fragen", + "faqSubtitle": "Finden Sie Antworten auf die häufigsten Fragen zur Nutzung von Smart Rent System", + "categories": { + "general": "Allgemeine Fragen", + "booking": "Buchung & Reservierungen", + "payment": "Zahlungen & Rückerstattungen", + "host": "Fragen zur Vermietung", + "safety": "Sicherheit", + "account": "Kontoverwaltung" + }, + "needMoreHelp": "Brauchen Sie weitere Hilfe?", + "needMoreHelpDesc": "Wenn Sie nicht finden, was Sie suchen, steht Ihnen unser Support-Team zur Verfügung.", + "contactSupport": "Support kontaktieren", + "categoriesLabel": "Kategorien", + "helpCenter": "Hilfe-Center", + "helpCenterDesc": "Durchsuchen Sie umfassende Hilfeguides, Tutorials und Tipps zur Fehlerbehebung für Smart Rent.", + "visitHelpCenter": "Hilfe-Center besuchen", + "safetyInfo": "Sicherheitsinformationen", + "safetyInfoDesc": "Erfahren Sie mehr über unsere Sicherheitsprotokolle, Richtlinien für Gäste und Gastgeber und Notfallressourcen.", + "viewSafetyGuidelines": "Sicherheitsrichtlinien anzeigen" + , + "categories": { + "general": "Allgemeine Fragen", + "categoriesLabel": "Kategorien", + "categories": { + "general": "Allgemeine Fragen", + "booking": "Buchungen & Reservierungen", + "payment": "Zahlungen & Rückerstattungen", + "host": "Gastgeber-Fragen", + "safety": "Sicherheit & Schutz", + "account": "Kontoverwaltung" + }, + "needMoreHelp": "Brauchen Sie mehr Hilfe?", + "needMoreHelpDesc": "Wenn Sie nicht finden, was Sie suchen, steht Ihnen unser Support-Team zur Verfügung.", + "contactSupport": "Support kontaktieren", + "helpCenter": "Hilfezentrum", + "helpCenterDesc": "Durchsuchen Sie umfassende Hilfeguides, Tutorials und Tipps zur Fehlerbehebung für Smart Rent.", + "visitHelpCenter": "Hilfezentrum besuchen", + "safetyInfo": "Sicherheitsinformationen", + "safetyInfoDesc": "Erfahren Sie mehr über unsere Sicherheitsprotokolle, Richtlinien für Gäste und Gastgeber sowie Notfallressourcen.", + "viewSafetyGuidelines": "Sicherheitsrichtlinien anzeigen", + "reportConcernTitle": "Ein Problem melden", + "reportConcernDesc": "Müssen Sie ein Sicherheitsproblem, einen Verstoß gegen die Richtlinien oder ein anderes Anliegen bezüglich eines Eintrags oder Benutzers melden?", + "submitReport": "Bericht einreichen", + "general": { + "what-is-smart-rent": { + "question": "Was ist das Smart Rent System?", + "answer": "Smart Rent System ist eine Plattform, die Reisende mit einzigartigen Unterkünften weltweit verbindet. Gastgeber können ihre Immobilien listen, Gäste diese buchen. Wir bieten sichere Zahlungsabwicklung, verifizierte Bewertungen und Kundensupport für ein reibungsloses Erlebnis." + }, + "how-to-start": { + "question": "Wie starte ich mit Smart Rent?", + "answer": "Der Einstieg ist einfach! Erstellen Sie ein Konto, füllen Sie Ihr Profil aus und suchen Sie nach Unterkünften oder listen Sie Ihre eigene. Durchsuchen Sie Angebote nach Ort, Preis, Ausstattung und mehr, um das perfekte Ziel zu finden." + }, + "contact-support": { + "question": "Wie kontaktiere ich den Kundensupport?", + "answer": "Sie erreichen unser Support-Team über verschiedene Kanäle. Nutzen Sie die Kontaktseite, schreiben Sie an support@smartrentsystem.com oder rufen Sie +1 (800) SMART-RENT an. Unser Team ist rund um die Uhr erreichbar." + }, + "app-available": { + "question": "Gibt es eine mobile App?", + "answer": "Ja! Die Smart Rent System App ist für iOS und Android verfügbar. Laden Sie sie im App Store oder Google Play Store herunter, um Buchungen zu verwalten, Nachrichten zu senden und Angebote zu durchsuchen." + } + }, + "booking": { + "how-to-book": { + "question": "Wie buche ich eine Unterkunft?", + "answer": "Um eine Unterkunft zu buchen, suchen Sie nach Angeboten an Ihrem gewünschten Ort und Datum. Klicken Sie auf 'Reservieren' oder 'Jetzt buchen' und folgen Sie dem Checkout-Prozess. Einige Angebote sind sofort buchbar, andere benötigen die Zustimmung des Gastgebers." + }, + "booking-confirmation": { + "question": "Wie weiß ich, ob meine Buchung bestätigt ist?", + "answer": "Nach Abschluss der Buchung erhalten Sie eine Bestätigungs-E-Mail mit allen Details. Den Status Ihrer Buchung sehen Sie auch im Bereich 'Reisen' Ihres Kontos." + }, + "cancel-booking": { + "question": "Wie storniere ich eine Buchung?", + "answer": "Um eine Buchung zu stornieren, gehen Sie zu 'Reisen' in Ihrem Konto, wählen Sie die Buchung aus und klicken Sie auf 'Stornieren'. Die Rückerstattung richtet sich nach den Stornierungsbedingungen der Unterkunft." + }, + "modify-dates": { + "question": "Kann ich die Reisedaten ändern?", + "answer": "Ja, Sie können eine Änderung der Reisedaten anfragen. Gehen Sie zu 'Reisen', wählen Sie die Buchung und klicken Sie auf 'Buchung ändern'. Dies hängt von der Zustimmung des Gastgebers und der Verfügbarkeit ab. Preisänderungen sind möglich." + } + }, + "payment": { + "payment-methods": { + "question": "Welche Zahlungsmethoden werden akzeptiert?", + "answer": "Wir akzeptieren gängige Kredit- und Debitkarten (Visa, MasterCard, American Express, Discover), PayPal und in einigen Regionen Apple Pay und Google Pay. Alle Zahlungen werden sicher über unsere Plattform abgewickelt." + }, + "payment-timing": { + "question": "Wann wird meine Buchung abgerechnet?", + "answer": "Bei den meisten Buchungen wird der Gesamtbetrag fällig, wenn der Gastgeber die Buchung akzeptiert oder sofort bei Sofortbuchung. Bei längeren Aufenthalten oder Vorausbuchungen kann Ratenzahlung möglich sein." + }, + "security-deposit": { + "question": "Was ist eine Kaution und wann wird sie zurückerstattet?", + "answer": "Eine Kaution wird zur Deckung möglicher Schäden während Ihres Aufenthalts einbehalten. Sie wird nur bei einem Anspruch des Gastgebers belastet. Ohne Anspruch wird die Kaution 14 Tage nach dem Check-out automatisch freigegeben." + }, + "refund-process": { + "question": "Wie lange dauert eine Rückerstattung?", + "answer": "Nach Ausstellung der Rückerstattung dauert es in der Regel 5-10 Werktage, bis sie auf Ihrer Zahlungsmethode erscheint. Die genaue Dauer hängt von Ihrem Zahlungsanbieter und Ihrer Bank ab." + } + } + }, + "categoriesLabel": "Kategorien", + "general": [], + "booking": [], + "payment": [], + "host": [], + "safety": [], + "account": [] +} diff --git a/frontend/src/locales/de/Help.json b/frontend/src/locales/de/Help.json new file mode 100644 index 0000000..dc258b4 --- /dev/null +++ b/frontend/src/locales/de/Help.json @@ -0,0 +1,117 @@ +{ + "helpTitle": "Hilfezentrum", + "helpSubtitle": "Wie können wir Ihnen helfen?", + "searchPlaceholder": "Hilfethemen suchen...", + "contactSupport": "Support kontaktieren", + "faq": "Häufig gestellte Fragen", + "noResults": "Keine Hilfeartikel gefunden.", + "backToHome": "Zurück zur Startseite", + "howCanWeHelp": "Wie können wir Ihnen helfen?", + "findAnswers": "Finden Sie Antworten auf Ihre Fragen oder kontaktieren Sie unser Support-Team", + "searchForAnswers": "Antworten suchen...", + "helpGuidesTitle": "Hilfeguides", + "helpGuidesDesc": "Detaillierte Anleitungen zur Nutzung der Smart Rent Funktionen", + "viewGuides": "Guides anzeigen", + "safetyInfo": "Sicherheitsinformationen", + "cancellationPolicies": "Stornierungsrichtlinien", + "reportConcern": "Ein Problem melden", + "contactSupportDesc": "Kontaktieren Sie unser Kundensupport-Team", + "contactUs": "Kontaktieren Sie uns", + "communityForum": "Community-Forum", + "communityForumDesc": "Vernetzen Sie sich mit anderen Nutzern und teilen Sie Ihre Erfahrungen", + "joinDiscussion": "An Diskussion teilnehmen", + "faq": "Häufig gestellte Fragen", + "categoryGeneral": "Allgemein", + "categoryAccount": "Konto & Profil", + "categoryBooking": "Buchungen & Reservierungen", + "categoryPayment": "Zahlungen & Rückerstattungen", + "categoryHosting": "Vermietung", + "categorySafety": "Sicherheit & Barrierefreiheit", + "generalFaqs": "Allgemeine FAQs", + "whatIsSmartRent": "Was ist Smart Rent?", + "howToUseSmartRent": "Wie benutze ich Smart Rent?", + "howToContactService": "Wie kontaktiere ich den Kundenservice?", + "cantFind": "Nicht gefunden, was Sie suchen?", + "contactOurSupport": "Kontaktieren Sie unser Support-Team", + "emailSupport": "E-Mail-Support", + "emailSupportDesc": "Unser E-Mail-Support-Team ist rund um die Uhr für Sie da.", + "phoneSupport": "Telefon-Support", + "phoneSupportDesc": "Rufen Sie unser Kundenserviceteam für sofortige Hilfe während der Geschäftszeiten an.", + "phoneSupportHours": "Verfügbar Montag-Freitag, 9-18 Uhr (EST)", + "liveChat": "Live-Chat", + "liveChatDesc": "Chatten Sie in Echtzeit mit unserem Support-Team für schnelle Hilfe.", + "startChat": "Chat starten", + "available247": "Rund um die Uhr verfügbar", + "available247": "Rund um die Uhr verfügbar", + "categoryGeneral": "Allgemein", + "categoryAccount": "Konto & Profil", + "categoryBooking": "Buchungen & Reservierungen", + "categoryPayment": "Zahlungen & Rückerstattungen", + "categoryHosting": "Vermietung", + "categorySafety": "Sicherheit & Barrierefreiheit", + "faqWhatIsSmartRentQuestion": "Was ist Smart Rent?", + "faqWhatIsSmartRentAnswer": "Smart Rent ist eine Plattform, die Immobilieneigentümer mit Reisenden verbindet, die nach einzigartigen und komfortablen Unterkünften suchen. Ob Sie eine gemütliche Wohnung in der Stadt oder eine Villa am Strand suchen, Smart Rent bietet eine große Auswahl an Immobilien für Ihre Bedürfnisse und Ihr Budget.", + "faqHowToUseQuestion": "Wie benutze ich Smart Rent?", + "faqHowToUseAnswer": "Die Nutzung von Smart Rent ist einfach. Erstellen Sie ein Konto, suchen Sie nach Immobilien basierend auf Ihrem Reiseziel und Ihren Daten, stöbern Sie durch die Optionen und buchen Sie die, die Ihnen am besten gefällt. Sie können auch Immobilien zu Ihrer Wunschliste hinzufügen, Gastgeber direkt kontaktieren und nach Ihrem Aufenthalt Bewertungen abgeben.", + "faqCustomerServiceQuestion": "Wie kontaktiere ich den Kundenservice?", + "faqCustomerServiceAnswer": "Sie können unser Kundenserviceteam per E-Mail an help@smartrent.com, über unseren 24/7 Live-Chat auf unserer Website oder telefonisch unter +1-800-SMART-RENT kontaktieren. Wir bemühen uns, alle Anfragen innerhalb von 24 Stunden zu beantworten.", + "faqCreateAccountQuestion": "Wie erstelle ich ein Konto?", + "faqCreateAccountAnswer": "Um ein Konto zu erstellen, klicken Sie auf die Schaltfläche 'Registrieren' oben rechts auf unserer Website oder App. Sie können sich mit Ihrer E-Mail-Adresse, Google oder Facebook anmelden. Füllen Sie Ihre Daten aus, akzeptieren Sie unsere Nutzungsbedingungen und schon kann es losgehen!", + "faqDeleteAccountQuestion": "Kann ich mein Konto löschen?", + "faqDeleteAccountAnswer": "Ja, Sie können Ihr Konto jederzeit löschen. Gehen Sie zu Ihren Kontoeinstellungen, scrollen Sie nach unten und klicken Sie auf 'Konto löschen'. Bitte beachten Sie, dass diese Aktion nicht rückgängig gemacht werden kann und alle Ihre Daten dauerhaft entfernt werden.", + "faqCancelBookingQuestion": "Wie storniere ich eine Buchung?", + "faqCancelBookingAnswer": "Um eine Buchung zu stornieren, gehen Sie zu Ihrer Reisen-Seite, suchen Sie die Reservierung, die Sie stornieren möchten, und klicken Sie auf 'Reservierung stornieren'. Die Rückerstattung hängt von der Stornierungsrichtlinie der Immobilie und dem Zeitpunkt der Stornierung ab. Prüfen Sie immer die Stornierungsrichtlinie vor der Buchung.", + "faqModifyBookingQuestion": "Kann ich meine Buchungsdaten ändern?", + "faqModifyBookingAnswer": "Ja, Sie können eine Änderung Ihrer Buchungsdaten anfragen. Gehen Sie zu Ihrer Reisen-Seite, suchen Sie die Reservierung, die Sie ändern möchten, und klicken Sie auf 'Reservierung ändern'. Änderungen bedürfen der Zustimmung des Gastgebers und können zu Preisänderungen führen.", + "faqPaymentMethodsQuestion": "Welche Zahlungsmethoden akzeptieren Sie?", + "faqPaymentMethodsAnswer": "Wir akzeptieren verschiedene Zahlungsmethoden, darunter gängige Kreditkarten (Visa, MasterCard, American Express), Debitkarten, PayPal und in einigen Regionen auch Ratenzahlungen über Affirm oder Klarna.", + "faqRefundPolicyQuestion": "Wie ist Ihre Rückerstattungsrichtlinie?", + "faqRefundPolicyAnswer": "Unsere Rückerstattungsrichtlinie hängt von der vom Gastgeber gewählten Stornierungsrichtlinie der Immobilie ab. Diese sind in der Regel: Flexibel, Moderat und Streng. Der genaue Rückerstattungsbetrag wird vor der Buchungsbestätigung und in Ihren Reisedetails angezeigt.", + "faqBecomeHostQuestion": "Wie werde ich Gastgeber?", + "faqBecomeHostAnswer": "Um Gastgeber zu werden, klicken Sie im oberen Navigationsmenü auf 'Gastgeber werden'. Sie müssen ein Inserat mit Fotos, Beschreibung und Preisinformationen für Ihre Immobilie erstellen. Unser Schritt-für-Schritt-Leitfaden hilft Ihnen beim Einrichten Ihres Inserats und beim Empfang von Gästen.", + "faqHostFeesQuestion": "Welche Gebühren zahlen Gastgeber?", + "faqHostFeesAnswer": "Gastgeber zahlen eine Servicegebühr, die in der Regel 3% des Buchungszwischensaldos beträgt. Diese Gebühr deckt die Kosten für die Zahlungsabwicklung und die von uns bereitgestellten Dienstleistungen wie 24/7 Kundensupport und die Vermarktung Ihrer Immobilie.", + "faqCovidMeasuresQuestion": "Welche COVID-19-Sicherheitsmaßnahmen gibt es?", + "faqCovidMeasuresAnswer": "Wir ermutigen Gastgeber, erweiterte Reinigungsprotokolle einzuhalten, die mit Gesundheitsexperten entwickelt wurden. Viele Immobilien haben zusätzliche Sicherheitsmaßnahmen implementiert, die auf der Inseratsseite angezeigt werden. Wir bieten auch flexible Stornierungsoptionen im Zusammenhang mit COVID-19 an.", + "faqAccessibilityQuestion": "Wie finde ich barrierefreie Immobilien?", + "faqAccessibilityAnswer": "Sie können unsere Barrierefreiheitsfilter bei der Immobiliensuche verwenden, um passende Angebote zu finden. Gastgeber können verschiedene Barrierefreiheitsmerkmale wie stufenlosen Zugang, breite Türen, barrierefreie Parkplätze usw. angeben.", + "helpGuides": "Hilfeguides", + "helpGuidesDescription": "Detaillierte Anleitungen zur Nutzung der Smart Rent Funktionen und Services.", + "safetyInformation": "Sicherheitsinformationen", + "cancellationPolicies": "Stornierungsrichtlinien", + "reportAConcern": "Ein Problem melden", + "contactSupport": "Support kontaktieren", + "contactSupportDescription": "Unser Support-Team hilft Ihnen gerne bei allen Fragen oder Problemen.", + "yourName": "Ihr Name", + "enterYourName": "Geben Sie Ihren Namen ein", + "emailAddress": "E-Mail-Adresse", + "enterYourEmail": "Geben Sie Ihre E-Mail ein", + "subject": "Betreff", + "selectASubject": "Thema auswählen", + "bookingIssue": "Buchungsproblem", + "paymentProblem": "Zahlungsproblem", + "accountSettings": "Kontoeinstellungen", + "hostingQuestion": "Frage zur Vermietung", + "other": "Sonstiges", + "message": "Nachricht", + "describeYourIssueOrQuestion": "Beschreiben Sie Ihr Problem oder Ihre Frage", + "submitRequest": "Anfrage absenden", + "communityForum": "Community-Forum", + "forumDescription": "Vernetzen Sie sich mit anderen Nutzern, teilen Sie Erfahrungen und erhalten Sie Ratschläge aus der Community.", + "comingSoon": "Demnächst verfügbar!", + "forumComingSoonDescription": "Unser Community-Forum befindet sich in der Entwicklung. Schauen Sie bald wieder vorbei, um an Diskussionen mit anderen Smart Rent Nutzern teilzunehmen!", + "howCanWeHelpYou": "Wie können wir Ihnen helfen?", + "findAnswersOrContactSupport": "Finden Sie Antworten auf Ihre Fragen oder kontaktieren Sie unser Support-Team", + "frequentlyAskedQuestions": "Häufig gestellte Fragen", + "cantFindWhatYouAreLookingFor": "Nicht gefunden, was Sie suchen?", + "contactOurSupportTeam": "Kontaktieren Sie unser Support-Team", + "emailSupport": "E-Mail-Support", + "emailSupportDescription": "Unser E-Mail-Support-Team ist rund um die Uhr für Sie da.", + "phoneSupport": "Telefon-Support", + "phoneSupportDescription": "Rufen Sie unser Kundenserviceteam für sofortige Hilfe während der Geschäftszeiten an.", + "availableMondayToFriday": "Verfügbar Montag-Freitag, 9-18 Uhr (EST)", + "liveChat": "Live-Chat", + "liveChatDescription": "Chatten Sie in Echtzeit mit unserem Support-Team für schnelle Hilfe.", + "startAChatSession": "Chat starten", + "available247": "Rund um die Uhr verfügbar" +} diff --git a/frontend/src/locales/de/Home.json b/frontend/src/locales/de/Home.json new file mode 100644 index 0000000..afc104c --- /dev/null +++ b/frontend/src/locales/de/Home.json @@ -0,0 +1,54 @@ +{ + "city-tours": "Stadttouren", + "city-toursDesc": "Mit lokalen Guides entdecken", + "outdoor-adventures": "Outdoor-Abenteuer", + "outdoor-adventuresDesc": "Mit lokalen Guides entdecken", + "local-cuisine": "Lokale Küche", + "local-cuisineDesc": "Mit lokalen Guides entdecken", + "heroTitle": "Finden Sie Aufenthalte, die sich <1>wie zu Hause anfühlen", + "heroDescription": "Entdecken Sie einzigartige Häuser, Apartments und Erlebnisse auf der ganzen Welt — handverlesen für Komfort, Stil und unvergessliche Erinnerungen.", + "exploreStays": "Aufenthalte entdecken", + "becomeHost": "Gastgeber werden", + + "inspirationTitle": "Inspiration für Ihre nächste Reise", + "inspirationSubtitle": "Entdecken Sie Top-Reiseziele mit perfekten Ferienunterkünften", + + "newYork": "New York", + "newYorkProperties": "120 Unterkünfte", + "losAngeles": "Los Angeles", + "losAngelesProperties": "94 Unterkünfte", + "miami": "Miami", + "miamiProperties": "85 Unterkünfte", + "chicago": "Chicago", + "chicagoProperties": "73 Unterkünfte", + + "stayAnywhereTitle": "Überall übernachten", + "stayAnywhereSubtitle": "Einzigartige Unterkünfte für jeden Stil und jedes Budget", + "apartments": "Apartments", + "apartmentsDesc": "Städtischer Komfort", + "houses": "Häuser", + "housesDesc": "Komplette Häuser", + "cabins": "Hütten", + "cabinsDesc": "Rustikale Rückzugsorte", + "villas": "Villen", + "villasDesc": "Luxusaufenthalte", + + "discoverExperiencesTitle": "Erlebnisse entdecken", + "discoverExperiencesSubtitle": "Finden Sie Aktivitäten von lokalen Experten", + "cityTours": "Stadttouren", + "cityToursDesc": "Mit lokalen Guides entdecken", + "outdoorAdventures": "Outdoor-Abenteuer", + "outdoorAdventuresDesc": "Mit lokalen Guides entdecken", + "localCuisine": "Lokale Küche", + "localCuisineDesc": "Mit lokalen Guides entdecken", + + "becomeAHostTitle": "Gastgeber werden", + "becomeAHostDesc": "Teilen Sie Ihren Raum, verdienen Sie zusätzliches Einkommen und verbinden Sie sich mit Gästen aus aller Welt.", + "learnMore": "Mehr erfahren", + "city-tours": "Stadttouren", + "city-toursDesc": "Mit lokalen Guides entdecken", + "outdoor-adventures": "Outdoor-Abenteuer", + "outdoor-adventuresDesc": "Mit lokalen Guides entdecken", + "local-cuisine": "Lokale Küche", + "local-cuisineDesc": "Mit lokalen Guides entdecken" +} diff --git a/frontend/src/locales/de/Login.json b/frontend/src/locales/de/Login.json new file mode 100644 index 0000000..8e81796 --- /dev/null +++ b/frontend/src/locales/de/Login.json @@ -0,0 +1,11 @@ +{ + "loginTitle": "Melden Sie sich bei Ihrem Konto an", + "createAccount": "Oder erstellen Sie ein neues Konto", + "email": "E-Mail-Adresse", + "password": "Passwort", + "rememberMe": "Angemeldet bleiben", + "forgotPassword": "Passwort vergessen?", + "login": "Anmelden", + "orContinueWith": "Oder fortfahren mit", + "signInWithGoogle": "Mit Google anmelden" +} diff --git a/frontend/src/locales/de/NotFound.json b/frontend/src/locales/de/NotFound.json new file mode 100644 index 0000000..8d31292 --- /dev/null +++ b/frontend/src/locales/de/NotFound.json @@ -0,0 +1,5 @@ +{ + "notFoundTitle": "Seite nicht gefunden", + "notFoundMessage": "Entschuldigung, die gesuchte Seite existiert nicht.", + "goHome": "Zur Startseite" +} diff --git a/frontend/src/locales/de/Register.json b/frontend/src/locales/de/Register.json new file mode 100644 index 0000000..c3a595f --- /dev/null +++ b/frontend/src/locales/de/Register.json @@ -0,0 +1,17 @@ +{ + "signInToExistingLink": "bei Ihrem bestehenden Konto anmelden", + "signUpWithGoogle": "Mit Google registrieren", + "signUpWithFacebook": "Mit Facebook registrieren", + "registerTitle": "Erstellen Sie Ihr Konto", + "signInToExisting": "Oder melden Sie sich bei Ihrem bestehenden Konto an", + "firstName": "Vorname", + "lastName": "Nachname", + "username": "Benutzername (optional)", + "usernameHint": "Wird ein Teil Ihrer E-Mail verwendet, wenn leer gelassen", + "email": "E-Mail-Adresse", + "password": "Passwort", + "confirmPassword": "Passwort bestätigen", + "agreeTerms": "Ich stimme den Nutzungsbedingungen und der Datenschutzrichtlinie zu", + "register": "Konto erstellen", + "orContinueWith": "Oder fortfahren mit" +} diff --git a/frontend/src/locales/de/ReportConcern.json b/frontend/src/locales/de/ReportConcern.json new file mode 100644 index 0000000..1ea99ac --- /dev/null +++ b/frontend/src/locales/de/ReportConcern.json @@ -0,0 +1,51 @@ +{ + "title": "Ein Anliegen melden", + "subtitle": "Ihre Sicherheit und Zufriedenheit haben für uns oberste Priorität. Teilen Sie uns etwaige Probleme oder Bedenken mit.", + "thankYouTitle": "Vielen Dank für Ihre Meldung", + "thankYouMsg1": "Wir haben Ihr Anliegen erhalten und werden es umgehend prüfen. Unser Team wird sich per E-Mail mit Ihnen in Verbindung setzen, falls wir weitere Informationen benötigen.", + "thankYouMsg2": "Referenznummer:", + "returnHome": "Zurück zur Startseite", + "visitHelp": "Hilfe-Center besuchen", + "howToTitle": "Wie Sie ein Anliegen melden", + "howToDesc": "Wir nehmen alle Meldungen ernst und werden jede gründlich prüfen. Bitte geben Sie so viele Details wie möglich an, damit wir Ihr Anliegen effizient bearbeiten können.", + "emergency": "Im Notfall:", + "emergencyDesc": "Wenn Sie sich in einer Notfallsituation befinden, wenden Sie sich bitte sofort an die örtlichen Notdienste, indem Sie Ihre lokale Notrufnummer wählen.", + "submitTitle": "Meldung absenden", + "concernTypeLabel": "Art des Anliegens *", + "concernTypePlaceholder": "Art des Anliegens auswählen", + "concernTypes": [ + "Sicherheitsbedenken", + "Möglicher Betrug", + "Betrug oder irreführendes Inserat", + "Diskriminierung", + "Sachschaden", + "Barrierefreiheitsproblem", + "Kontosicherheit", + "Anderes Anliegen" + ], + "listingIdLabel": "Inserats-/Reservierungs-ID (falls zutreffend)", + "listingIdPlaceholder": "z.B. LIST12345 oder RES67890", + "listingIdHelp": "Dies hilft uns, das spezifische Inserat oder die Reservierung zu identifizieren, auf das sich Ihr Anliegen bezieht.", + "descriptionLabel": "Beschreibung des Anliegens *", + "descriptionPlaceholder": "Bitte geben Sie so viele Details wie möglich zu Ihrem Anliegen an...", + "attachmentsLabel": "Anhänge (optional)", + "attachmentsUpload": "Dateien hochladen", + "attachmentsOr": "oder ziehen und ablegen", + "attachmentsHelp": "PNG, JPG, PDF bis zu 10MB", + "contactTitle": "Ihre Kontaktdaten", + "nameLabel": "Name *", + "emailLabel": "E-Mail *", + "phoneLabel": "Telefonnummer (optional)", + "privacyNotice": "Ich verstehe, dass meine Informationen wie in der <1>Datenschutzerklärung beschrieben verarbeitet werden", + "submitBtn": "Meldung absenden", + "safetyInfoTitle": "Sicherheitsinformationen", + "safetyInfoDesc": "Erfahren Sie mehr über unsere Sicherheitsrichtlinien und -protokolle für Gäste und Gastgeber.", + "helpCenterTitle": "Hilfe-Center", + "helpCenterDesc": "Durchsuchen Sie unsere häufig gestellten Fragen und Hilfeguides.", + "contactSupportTitle": "Support kontaktieren", + "contactSupportDesc": "Kontaktieren Sie unser Kundensupport-Team.", + "emergencyLineTitle": "Notfallnummer", + "emergencyLineDesc": "Rufen Sie unsere Notfallnummer für dringende Angelegenheiten an.", + "additionalResources": "Weitere Ressourcen" + ,"attachmentsUploadNoFile": "Keine Datei ausgewählt" +} \ No newline at end of file diff --git a/frontend/src/locales/de/Safety.json b/frontend/src/locales/de/Safety.json new file mode 100644 index 0000000..3ebd439 --- /dev/null +++ b/frontend/src/locales/de/Safety.json @@ -0,0 +1,48 @@ +{ + "headerTitle": "Ihre Sicherheit zählt", + "headerSubtitle": "Smart Rent System setzt sich für eine sichere Umgebung für unsere Gastgeber und Gäste ein", + "commitmentTitle": "Unser Engagement für Sicherheit", + "commitmentDesc1": "Bei Smart Rent System steht die Sicherheit und das Wohlbefinden unserer Community an erster Stelle. Wir haben umfassende Sicherheitsmaßnahmen, Verifizierungsprozesse und Unterstützungssysteme implementiert, damit Gastgeber und Gäste unsere Plattform mit Vertrauen und Sicherheit nutzen können.", + "commitmentDesc2": "Diese Seite bietet Informationen zu unseren Sicherheitspraktiken, Notfallressourcen und Richtlinien, damit Sie bei der Nutzung unserer Dienste sicher bleiben.", + "featuresTitle": "Wichtige Sicherheitsmerkmale", + "featureVerifiedTitle": "Verifizierte Profile", + "featureVerifiedDesc": "Alle Nutzer durchlaufen eine Identitätsprüfung, bevor sie buchen oder Gastgeber werden können. So stellen wir sicher, dass unsere Community-Mitglieder wirklich die sind, die sie vorgeben zu sein.", + "featurePropertyTitle": "Immobilienstandards", + "featurePropertyDesc": "Die auf unserer Plattform gelisteten Immobilien müssen grundlegende Sicherheitsanforderungen erfüllen, einschließlich funktionaler Rauch- und Kohlenmonoxidmelder.", + "featureSupportTitle": "24/7 Support", + "featureSupportDesc": "Unser Kundensupport-Team ist rund um die Uhr verfügbar, um bei Sicherheitsfragen oder Notfällen zu helfen.", + "tipsTitle": "Sicherheitstipps", + "tipsGuestsTitle": "Für Gäste", + "tipsGuests1": "Überprüfen Sie die Details der Immobilie sorgfältig, einschließlich Sicherheitsmerkmale und Hausregeln.", + "tipsGuests2": "Lesen Sie Bewertungen früherer Gäste, um Einblicke in die Immobilie und den Gastgeber zu erhalten.", + "tipsGuests3": "Kommunizieren Sie zu Ihrem Schutz ausschließlich über die Smart Rent System Plattform.", + "tipsGuests4": "Machen Sie sich bei der Ankunft mit Notausgängen und Sicherheitsausrüstung vertraut.", + "tipsGuests5": "Teilen Sie Ihre Reiseroute mit einem vertrauenswürdigen Freund oder Familienmitglied.", + "tipsHostsTitle": "Für Gastgeber", + "tipsHosts1": "Installieren und warten Sie Rauchmelder, Kohlenmonoxidmelder und Feuerlöscher.", + "tipsHosts2": "Geben Sie klare Check-in-Anweisungen und Notfallkontaktinformationen an.", + "tipsHosts3": "Stellen Sie ordnungsgemäße Schlösser an allen Türen und Fenstern, einschließlich Schlafzimmern, sicher.", + "tipsHosts4": "Erstellen und zeigen Sie einen Notfallleitfaden mit lokalen medizinischen Einrichtungen und Notrufnummern an.", + "tipsHosts5": "Prüfen Sie Gäste, indem Sie deren Profile und Kommunikation vor der Buchungsannahme überprüfen.", + "covidTitle": "COVID-19 Sicherheitsmaßnahmen", + "covidDesc": "Auch wenn viele Regionen die COVID-19-Beschränkungen gelockert haben, fördern wir weiterhin Sicherheitspraktiken, die unsere Community schützen:", + "covidCleaningTitle": "Verbessertes Reinigungsprotokoll", + "covidCleaningDesc": "Wir empfehlen Gastgebern, zwischen den Gästen verbesserte Reinigungsverfahren einzuhalten, einschließlich der Desinfektion von häufig berührten Oberflächen und der Bereitstellung von Handdesinfektionsmittel, wenn möglich.", + "covidFlexibleTitle": "Flexible Buchungsoptionen", + "covidFlexibleDesc": "Viele Immobilien bieten flexible Stornierungsbedingungen, um unerwartete Änderungen der Reisepläne aufgrund gesundheitlicher Bedenken zu berücksichtigen.", + "emergencyTitle": "Notfallressourcen", + "emergencyImmediateTitle": "Sofortiger Notfall", + "emergencyImmediateDesc": "Bei lebensbedrohlichen Notfällen wenden Sie sich sofort an die örtlichen Notdienste:", + "emergencyNumber": "112", + "emergencyNumberNote": "(oder die entsprechende Notrufnummer für Ihren Standort)", + "emergencySupportTitle": "Smart Rent System Notfall-Support", + "emergencySupportDesc": "Für dringende Situationen, die nicht lebensbedrohlich sind, aber sofortige Hilfe erfordern:", + "emergencySupportLineLabel": "Notfall-Support-Hotline", + "emergencySupportLine": "+49 30 12345678", + "emergencySupportEmailLabel": "Sicherheits-E-Mail", + "emergencySupportEmail": "safety@smartrent.com", + "reportTitle": "Sicherheitsbedenken melden", + "reportDesc": "Wenn Sie auf ein Sicherheitsproblem stoßen oder Bedenken bezüglich einer Buchung oder eines Eintrags haben, melden Sie dies bitte umgehend. Ihre Meldungen helfen uns, eine sichere Plattform für alle zu erhalten.", + "reportContactSupport": "Support kontaktieren", + "reportVisitHelpCenter": "Hilfe-Center besuchen" +} diff --git a/frontend/src/locales/de/Terms.json b/frontend/src/locales/de/Terms.json new file mode 100644 index 0000000..f7e6ae5 --- /dev/null +++ b/frontend/src/locales/de/Terms.json @@ -0,0 +1,75 @@ +{ + "termsTitle": "Nutzungsbedingungen", + "termsSubtitle": "Die Regeln und Richtlinien für die Nutzung von Smart Rent System", + "lastUpdated": "Zuletzt aktualisiert: 15. November 2023", + "welcome": "Willkommen bei Smart Rent System. Diese Nutzungsbedingungen regeln Ihren Zugang zu und die Nutzung der Smart Rent System-Website, Apps und Dienste. Durch den Zugriff auf oder die Nutzung unseres Dienstes erklären Sie sich mit diesen Bedingungen einverstanden.", + "acceptanceTitle": "1. Annahme der Bedingungen", + "acceptance": "Durch die Registrierung für und/oder die Nutzung des Dienstes in irgendeiner Weise stimmen Sie diesen Bedingungen und allen anderen von Smart Rent System veröffentlichten Betriebsregeln, Richtlinien und Verfahren zu. Diese Bedingungen gelten für alle Nutzer des Dienstes, einschließlich Gastgeber, Gäste und allgemeine Besucher.", + "accountTitle": "2. Kontoerstellung", + "account": "Um bestimmte Funktionen des Dienstes nutzen zu können, müssen Sie ein Konto registrieren. Bei der Registrierung erklären Sie sich damit einverstanden:", + "accountList": [ + "Genaue, aktuelle und vollständige Informationen bereitzustellen", + "Ihre Kontoinformationen zu pflegen und umgehend zu aktualisieren", + "Die Sicherheit Ihres Kontos und Passworts zu gewährleisten", + "Alle Risiken eines unbefugten Zugriffs auf Ihr Konto zu akzeptieren", + "Uns unverzüglich über jede unbefugte Nutzung Ihres Kontos zu informieren" + ], + "accountNote": "Wir behalten uns das Recht vor, den Dienst zu verweigern, Konten zu kündigen oder Inhalte nach eigenem Ermessen zu entfernen.", + "contentTitle": "3. Inhalte und Verhalten", + "content": "Unser Dienst ermöglicht es Ihnen, bestimmte Informationen, Texte, Grafiken, Videos oder andere Materialien zu veröffentlichen, zu verlinken, zu speichern, zu teilen und anderweitig verfügbar zu machen. Sie sind für die von Ihnen veröffentlichten Inhalte und die Folgen ihrer Weitergabe verantwortlich. Durch das Veröffentlichen von Inhalten versichern Sie, dass Sie über die erforderlichen Rechte an diesen Inhalten verfügen.", + "contentList": [ + "Veröffentlichen Sie keine illegalen, schädlichen, bedrohlichen, beleidigenden oder diskriminierenden Inhalte", + "Geben Sie sich nicht als eine andere Person oder Organisation aus", + "Geben Sie Ihre Zugehörigkeit zu einer Person oder Organisation nicht falsch an oder stellen Sie sie falsch dar", + "Veröffentlichen Sie keine privaten oder vertraulichen Informationen anderer ohne deren Erlaubnis", + "Verhalten Sie sich nicht so, dass die Nutzung oder der Genuss des Dienstes durch andere eingeschränkt oder behindert wird", + "Nutzen Sie den Dienst nicht für illegale Zwecke oder in Verletzung von Gesetzen", + "Laden Sie keine Viren oder anderen schädlichen Code hoch", + "Versuchen Sie nicht, Sicherheitsfunktionen des Dienstes zu umgehen" + ], + "bookingTitle": "4. Buchungen und Reservierungen", + "bookingGuest": "Als Gast stimmen Sie bei einer Buchung zu:", + "bookingGuestList": [ + "Alle Gebühren, anfallenden Steuern und sonstigen Kosten im Zusammenhang mit Ihrer Buchung zu zahlen", + "Für Ihr Verhalten während Ihres Aufenthalts verantwortlich zu sein", + "Die Hausregeln und Check-out-Verfahren des Gastgebers einzuhalten", + "Die Unterkunft im gleichen Zustand zu hinterlassen, wie Sie sie vorgefunden haben", + "Schäden oder Probleme umgehend zu melden" + ], + "bookingHost": "Als Gastgeber stimmen Sie bei der Auflistung Ihrer Unterkunft zu:", + "bookingHostList": [ + "Genaue und vollständige Informationen über Ihren Raum bereitzustellen", + "Ihre Unterkunft in einem sicheren und sauberen Zustand zu halten", + "Buchungsanfragen zeitnah zu beantworten", + "Bestätigte Buchungen einzuhalten", + "Alle geltenden Gesetze einzuhalten, einschließlich Steuern, Zoneneinteilung und Sicherheitsvorschriften" + ], + "cancellationTitle": "5. Stornierungen und Rückerstattungen", + "cancellation": "Stornierungen und Rückerstattungen werden gemäß der vom Gastgeber für sein Inserat gewählten Stornierungsrichtlinie behandelt. Diese Richtlinie wird vor der Buchung auf jedem Inserat angezeigt. Durch den Abschluss einer Buchung erkennen Gäste die Stornierungsrichtlinie des Gastgebers an und stimmen ihr zu.", + "cancellationMore": "Weitere Informationen finden Sie in unserer <1>Stornierungsrichtlinie.", + "feesTitle": "6. Gebühren und Zahlungen", + "fees": "Smart Rent System erhebt Servicegebühren sowohl von Gästen als auch von Gastgebern für die Nutzung der Plattform. Diese Gebühren werden als Prozentsatz des Buchungszwischensaldos berechnet und vor dem Checkout deutlich angezeigt. Durch die Nutzung unseres Dienstes erklären Sie sich bereit, alle anfallenden Gebühren zu zahlen. Alle Zahlungen werden sicher über unsere Plattform abgewickelt.", + "disclaimerTitle": "7. Haftungsausschlüsse und Haftungsbeschränkungen", + "disclaimer": "Der Dienst wird \"wie besehen\" und \"wie verfügbar\" bereitgestellt. Smart Rent System lehnt ausdrücklich alle Arten von Garantien ab, ob ausdrücklich oder stillschweigend, einschließlich, aber nicht beschränkt auf stillschweigende Garantien der Marktgängigkeit, Eignung für einen bestimmten Zweck und Nichtverletzung.", + "liability": "Smart Rent System haftet unter keinen Umständen für indirekte, zufällige, besondere, Folge- oder Strafschäden, einschließlich, aber nicht beschränkt auf entgangenen Gewinn, Daten, Nutzung, Goodwill oder andere immaterielle Verluste, die sich aus Ihrem Zugriff auf oder Ihrer Nutzung des Dienstes oder der Unfähigkeit, auf den Dienst zuzugreifen oder ihn zu nutzen, ergeben.", + "indemnificationTitle": "8. Freistellung", + "indemnification": "Sie erklären sich damit einverstanden, Smart Rent System, seine leitenden Angestellten, Direktoren, Mitarbeiter und Vertreter von allen Ansprüchen, Verbindlichkeiten, Schäden, Verlusten und Ausgaben, einschließlich angemessener Anwaltsgebühren, die sich aus Ihrem Zugriff auf oder Ihrer Nutzung des Dienstes, Ihrem Verstoß gegen diese Bedingungen oder Ihrem Verstoß gegen die Rechte anderer ergeben, zu verteidigen, zu entschädigen und schadlos zu halten.", + "modificationsTitle": "9. Änderungen der Bedingungen", + "modifications": "Wir behalten uns das Recht vor, diese Bedingungen jederzeit zu ändern. Wenn wir Änderungen vornehmen, werden wir dies durch die Veröffentlichung der aktualisierten Bedingungen auf unserer Website und die Aktualisierung des Datums \"Zuletzt aktualisiert\" bekannt geben. Ihre fortgesetzte Nutzung des Dienstes nach einer solchen Mitteilung gilt als Ihre Zustimmung zu den neuen Bedingungen.", + "lawTitle": "10. Anwendbares Recht", + "law": "Diese Bedingungen unterliegen den Gesetzen von [Gerichtsstand] und werden in Übereinstimmung mit diesen ausgelegt, ohne Rücksicht auf kollisionsrechtliche Bestimmungen. Sie erklären sich damit einverstanden, sich der persönlichen und ausschließlichen Zuständigkeit der Gerichte in [Gerichtsstand] zu unterwerfen.", + "contactTitle": "11. Kontaktinformationen", + "contact": "Wenn Sie Fragen zu diesen Bedingungen haben, kontaktieren Sie uns bitte unter:", + "email": "E-Mail: legal@smartrentsystem.com", + "address": "Postanschrift: 123 Rent Street, Stadt, Land", + "phone": "Telefon: +1 (123) 456-7890", + "privacy": "Datenschutzrichtlinie", + "privacyDesc": "Erfahren Sie, wie wir Ihre Informationen erfassen, verwenden und schützen.", + "readPrivacy": "Datenschutzrichtlinie lesen", + "cookie": "Cookie-Richtlinie", + "cookieDesc": "Erfahren Sie, wie wir Cookies und ähnliche Technologien auf unserer Website verwenden.", + "readCookie": "Cookie-Richtlinie lesen", + "help": "Hilfe-Center", + "helpDesc": "Finden Sie Antworten auf häufig gestellte Fragen zu unseren Bedingungen und Richtlinien.", + "visitHelp": "Hilfe-Center besuchen" +} diff --git a/frontend/src/locales/de/footer.json b/frontend/src/locales/de/footer.json new file mode 100644 index 0000000..e00f6d0 --- /dev/null +++ b/frontend/src/locales/de/footer.json @@ -0,0 +1,27 @@ +{ + "companyDescription": "Finden Sie Ihr perfektes Zuhause fern von zu Hause. SmartRent bietet eine sichere Plattform für die Immobilienvermietung mit verifizierten Gastgebern und hochwertigen Angeboten.", + "quickLinks": "Schnellzugriff", + "home": "Startseite", + "aboutUs": "Über uns", + "contact": "Kontakt", + "blog": "Blog", + "support": "Support", + "help": "Hilfe", + "safetyInformation": "Sicherheitsinformationen", + "cancellationOptions": "Stornierungsoptionen", + "reportConcern": "Problem melden", + "faq": "FAQ", + "contactUs": "Kontaktieren Sie uns", + "address": "123 Mietstraße, Stadt, Land", + "subscribeNewsletter": "Newsletter abonnieren", + "yourEmail": "Ihre E-Mail", + "subscribing": "Abonnieren...", + "subscribeSuccess": "Danke für Ihr Abonnement!", + "subscribeError": "Bitte geben Sie eine gültige E-Mail-Adresse ein.", + "privacyPolicy": "Datenschutzrichtlinie", + "termsOfService": "Nutzungsbedingungen", + "cookiePolicy": "Cookie-Richtlinie", + "phone": "+49 123 4567890", + "email": "info@smartrentsystem.com", + "allRightsReserved": "Alle Rechte vorbehalten." +} diff --git a/frontend/src/locales/de/navbar.json b/frontend/src/locales/de/navbar.json new file mode 100644 index 0000000..007c64b --- /dev/null +++ b/frontend/src/locales/de/navbar.json @@ -0,0 +1,19 @@ +{ + "search": "Suchen", + "login": "Anmelden", + "signup": "Registrieren", + "logout": "Abmelden", + "profile": "Profil", + "help": "Hilfe", + "becomeHost": "Gastgeber werden", + "messages": "Nachrichten", + "trips": "Reisen", + "wishlist": "Wunschliste", + "account": "Konto", + "settings": "Einstellungen", + "popularSuggestions": ["Berlin", "München", "Hamburg", "Köln", "Frankfurt"], + "recentSearches": "Letzte Suchen", + "clear": "Löschen", + "popularDestinations": "Beliebte Reiseziele", + "explore": "Entdecken" +} diff --git a/frontend/src/locales/en/About.json b/frontend/src/locales/en/About.json new file mode 100644 index 0000000..f303b11 --- /dev/null +++ b/frontend/src/locales/en/About.json @@ -0,0 +1,47 @@ +{ + "aboutTitle": "About Smart Rent System", + "aboutSubtitle": "Making property rentals simple, secure, and enjoyable for everyone.", + "missionTitle": "Our Mission", + "missionText": "Smart Rent System was founded in 2020 with a simple mission: to make property rentals accessible, secure, and enjoyable for everyone. We noticed that the traditional rental process was often complicated, time-consuming, and lacked transparency.", + "visionTitle": "Our Vision", + "visionText": "We set out to build a platform that would connect property owners with potential renters in a seamless way, providing tools that make the entire process - from listing to booking to staying - as smooth as possible. Today, Smart Rent System hosts thousands of properties across the globe, helping travelers find their perfect temporary homes while enabling property owners to maximize their rental potential with minimal hassle.", + "ourValuesTitle": "Our Values", + "trustSafetyTitle": "Trust & Safety", + "trustSafetyDesc": "We believe in creating a safe environment for both hosts and guests, with transparent policies and secure transactions.", + "globalCommunityTitle": "Global Community", + "globalCommunityDesc": "We celebrate diversity and work to create connections between people from different backgrounds and cultures.", + "innovationTitle": "Innovation", + "innovationDesc": "We continuously improve our platform and services to provide the best experience possible for all users.", + "teamTitle": "Meet Our Team", + "teamText": "Our team is dedicated to ensuring every user receives exceptional support and has a positive experience with Smart Rent System.", + "joinOurCommunity": "Join Our Community", + "joinOurCommunityDesc": "Whether you're looking for a place to stay or want to share your property with travelers, Smart Rent System is here to help.", + "exploreProperties": "Explore Properties", + "becomeHost": "Become a Host", + "teamMembers": [ + { + "name": "Jane Smith", + "role": "CEO & Founder", + "image": "https://randomuser.me/api/portraits/women/32.jpg", + "bio": "Jane founded Smart Rent System with a vision to transform the way people find and book accommodations around the world." + }, + { + "name": "Michael Johnson", + "role": "CTO", + "image": "https://randomuser.me/api/portraits/men/42.jpg", + "bio": "Michael leads our technology team, ensuring that our platform is secure, fast, and user-friendly for both hosts and guests." + }, + { + "name": "Sarah Chen", + "role": "Head of Operations", + "image": "https://randomuser.me/api/portraits/women/22.jpg", + "bio": "Sarah oversees our day-to-day operations, making sure that both hosts and guests have a seamless experience on our platform." + }, + { + "name": "James Wilson", + "role": "Customer Experience Lead", + "image": "https://randomuser.me/api/portraits/men/32.jpg", + "bio": "James is dedicated to ensuring every user receives exceptional support and has a positive experience with Smart Rent System." + } + ] +} diff --git a/frontend/src/locales/en/Account.json b/frontend/src/locales/en/Account.json new file mode 100644 index 0000000..9d677f1 --- /dev/null +++ b/frontend/src/locales/en/Account.json @@ -0,0 +1,36 @@ +{ + "accountSettings": "Account Settings", + "profile": "Profile", + "payment": "Payment Methods", + "security": "Security", + "notifications": "Notifications", + "privacy": "Privacy", + "mustBeLoggedIn": "You must be logged in to view this page", + "goToLogin": "Go to Login", + "logOut": "Log out", + "profileInformation": "Profile Information", + "firstName": "First name", + "lastName": "Last name", + "email": "Email", + "phone": "Phone", + "dateOfBirth": "Date of Birth", + "street": "Street", + "city": "City", + "state": "State", + "zipCode": "Zip Code", + "country": "Country", + "saveChanges": "Save Changes", + "profileUpdated": "Profile updated successfully!", + "profileUpdateFailed": "Failed to update profile: {{error}}", + "profileUpdateError": "An error occurred while updating profile", + "removeProfileImageConfirm": "Are you sure you want to remove your profile image?", + "removeProfileImageError": "Error removing profile image: {{error}}", + "removeProfileImageGenericError": "An error occurred while removing profile image", + "uploadProfileImageError": "Failed to upload profile image: {{error}}", + "uploadProfileImageGenericError": "An error occurred while uploading profile image", + "areYouSureRemovePayment": "Are you sure you want to remove this payment method?", + "profile": "Profile", + "default": "Default", + "setDefault": "Set as default", + "remove": "Remove" +} diff --git a/frontend/src/locales/en/BecomeHost.json b/frontend/src/locales/en/BecomeHost.json new file mode 100644 index 0000000..1edb792 --- /dev/null +++ b/frontend/src/locales/en/BecomeHost.json @@ -0,0 +1,71 @@ +{ + "becomeAHost": "Become a Host", + "step1Title": "Property Type", + "step2Title": "Location", + "step3Title": "Amenities", + "step4Title": "Photos", + "step5Title": "Details & Price", + "propertyType": "Property Type", + "propertyCategory": "Property Category", + "selectPropertyType": "Select a property type", + "selectPropertyCategory": "Select a property category", + "address": "Address", + "city": "City", + "state": "State", + "zipCode": "Zip Code", + "country": "Country", + "amenities": "Amenities", + "selectAmenities": "Select amenities", + "photos": "Photos", + "uploadPhotos": "Upload Photos", + "title": "Title", + "description": "Description", + "price": "Price per night", + "guests": "Guests", + "bedrooms": "Bedrooms", + "beds": "Beds", + "bathrooms": "Bathrooms", + "continue": "Continue", + "back": "Back", + "publishListing": "Publish listing", + "cancel": "Cancel", + "termsOfService": "Terms of Service", + "hostPolicies": "Host Policies", + "agreeToTerms": "By becoming a host, you agree to our {termsOfService} and {hostPolicies}.", + "uploading": "Uploading...", + "remove": "Remove", + "selectCurrency": "Select currency", + "selectLanguage": "Select language" +} + + "house": "House", + "apartment": "Apartment", + "guesthouse": "Guesthouse", + "hotel": "Hotel", + "cabin": "Cabin", + "villa": "Villa", + "beach": "Beach", + "mountain": "Mountain", + "city": "City", + "countryside": "Countryside", + "lake": "Lake", + "desert": "Desert", + "wifi": "Wifi", + "kitchen": "Kitchen", + "washer": "Washer", + "dryer": "Dryer", + "ac": "Air conditioning", + "heating": "Heating", + "tv": "TV", + "parking": "Free parking", + "pool": "Pool", + "hottub": "Hot tub", + "gym": "Gym", + "pets": "Pets allowed", + "usd": "US Dollar", + "eur": "Euro", + "gbp": "British Pound", + "jpy": "Japanese Yen", + "cad": "Canadian Dollar", + "aud": "Australian Dollar", + "inr": "Indian Rupee" diff --git a/frontend/src/locales/en/Blog.json b/frontend/src/locales/en/Blog.json new file mode 100644 index 0000000..72c5ab2 --- /dev/null +++ b/frontend/src/locales/en/Blog.json @@ -0,0 +1,18 @@ +{ + "blogTitle": "Smart Rent Blog", + "blogSubtitle": "Travel tips, destination guides, and insights to help you make the most of your trips", + "featuredArticles": "Featured Articles", + "allPosts": "All Posts", + "tips": "Travel Tips", + "destinations": "Destinations", + "hosting": "Hosting Tips", + "news": "Company News", + "noPostsFound": "No posts found", + "noPostsAvailable": "No posts available in this category yet.", + "viewAllPosts": "View All Posts", + "subscribeNewsletter": "Subscribe to Our Newsletter", + "newsletterDesc": "Get the latest travel tips, destination guides, and Smart Rent news delivered straight to your inbox.", + "yourEmail": "Your email address", + "subscribe": "Subscribe", + "privacyConsent": "By subscribing, you agree to our Privacy Policy and consent to receive updates from our company." +} diff --git a/frontend/src/locales/en/Cancellation.json b/frontend/src/locales/en/Cancellation.json new file mode 100644 index 0000000..0616fdc --- /dev/null +++ b/frontend/src/locales/en/Cancellation.json @@ -0,0 +1,62 @@ +{ + "cancellationTitle": "Cancellation Policies", + "cancellationSubtitle": "Transparent and flexible options to give you peace of mind when booking", + "understandingPolicies": "Understanding Our Policies", + "intro1": "At Smart Rent System, we understand that plans can change. Our cancellation policies are designed to provide clarity and flexibility for both guests and hosts.", + "intro2": "Each property on our platform has one of the cancellation policies outlined below. The specific policy for a property is clearly displayed on the listing page before you make a booking.", + "forGuests": "For Guests", + "forHosts": "For Hosts", + "guestIntro": "When booking a property, check its cancellation policy to understand your refund options if you need to cancel. Here's what each policy means for you as a guest:", + "hostIntro": "As a host, you can choose the cancellation policy that works best for your property and business needs. Consider the following when selecting a policy:", + "flexible": "Flexible", + "moderate": "Moderate", + "strict": "Strict", + "nonrefundable": "Non-Refundable", + "flexibleDesc": "Full refund if cancelled at least 24 hours before check-in", + "moderateDesc": "Full refund if cancelled at least 5 days before check-in", + "strictDesc": "Full refund if cancelled at least 14 days before check-in", + "nonrefundableDesc": "Special discounted rate with no refunds for cancellations", + "fullRefund": "Full refund", + "partialRefund": "Partial refund", + "noRefund": "No refund", + "discountedRate": "Discounted rate", + "travelInsurance": "Travel insurance", + "flexibleFull": "If cancelled at least 24 hours before check-in (2:00 PM local time)", + "flexiblePartial": "If cancelled less than 24 hours before check-in, the first night is non-refundable but 50% of the remaining nights will be refunded", + "flexibleNone": "If the guest arrives and decides to leave early, the nights not spent are not refunded", + "moderateFull": "If cancelled at least 5 days before check-in (2:00 PM local time)", + "moderatePartial": "If cancelled less than 5 days before check-in, the first night is non-refundable but 50% of the remaining nights will be refunded", + "moderateNone": "If the guest arrives and decides to leave early, the nights not spent are not refunded", + "strictFull": "If cancelled at least 14 days before check-in (2:00 PM local time)", + "strictPartial": "If cancelled between 7-14 days before check-in, you'll receive a 50% refund of the total cost", + "strictNone": "If cancelled less than 7 days before check-in, or if the guest fails to check-in, there is no refund", + "nonrefundableDiscount": "Guests receive a 10-15% discount off the standard rate for the property", + "nonrefundableNone": "No refund is provided for cancellations, regardless of when they occur", + "nonrefundableInsurance": "We strongly recommend guests purchase travel insurance when selecting this option", + "hostTipFlexible": "This policy is good for attracting guests who may be hesitant to commit. It works well for last-minute bookings and locations with high competition.", + "hostTipModerate": "This balanced policy offers a good compromise between flexibility for guests and security for hosts. It works well for most property types.", + "hostTipStrict": "This policy provides more security for hosts in high-demand areas or during peak seasons when rebooking cancelled dates might be difficult.", + "hostTipNonrefundable": "This option allows you to offer a discounted rate while ensuring payment security. Best for properties that are in high demand or during peak seasons.", + "extenuatingCircumstances": "Extenuating Circumstances Policy", + "extenuatingDesc1": "In rare cases, we may override the property's standard cancellation policy and issue a partial or full refund. These exceptions are made for unforeseen circumstances that:", + "extenuatingList1": "Occur before or during the stay", + "extenuatingList2": "Make it impossible or unsafe to complete the stay", + "extenuatingList3": "Are unforeseeable at the time of booking", + "extenuatingDesc2": "Examples include natural disasters, government-declared emergencies, serious illness or injury, or transportation disruptions that make it impossible to reach the destination.", + "extenuatingDesc3": "Documentation may be required to support claims for extenuating circumstances.", + "faqsTitle": "Frequently Asked Questions", + "needHelp": "Need More Help?", + "needHelpDesc": "If you have questions about a specific reservation or need assistance with a cancellation, our support team is here to help.", + "contactSupport": "Contact Support", + "visitHelp": "Visit Help Center", + "faq1Q": "What happens if I cancel my booking?", + "faq1A": "If you cancel your booking, your refund will depend on the property's cancellation policy. Please review the policy details on your reservation or listing page.", + "faq2Q": "How do I request a cancellation?", + "faq2A": "To request a cancellation, go to your 'Trips' page, select the booking, and click 'Cancel'. Follow the prompts to complete your request.", + "faq3Q": "When will I receive my refund?", + "faq3A": "Refunds are typically processed within 5-10 business days after cancellation, depending on your payment provider.", + "faq4Q": "Can I change my reservation dates instead of cancelling?", + "faq4A": "Yes, you can request to modify your reservation dates from your 'Trips' page. Approval is subject to host availability.", + "faq5Q": "What if I have an emergency and need to cancel?", + "faq5A": "If you need to cancel due to an emergency or extenuating circumstance, please contact our support team. We may be able to offer additional flexibility." +} diff --git a/frontend/src/locales/en/Contact.json b/frontend/src/locales/en/Contact.json new file mode 100644 index 0000000..8103a44 --- /dev/null +++ b/frontend/src/locales/en/Contact.json @@ -0,0 +1,20 @@ +{ + "contactTitle": "Contact Us", + "contactSubtitle": "We're here to help. Reach out to us anytime.", + "phoneLabel": "Phone", + "phoneValue": "+1 (800) 123-4567", + "officeHoursLabel": "Office Hours", + "officeHoursValue": "Mon-Fri, 9am-6pm", + "emailContactLabel": "Email", + "emailContactValue": "support@smartrent.com", + "successMessage": "Your message has been sent successfully!", + "addressLabel": "Address", + "addressValue": "123 Smart Rent Street\nSan Francisco, CA 94103", + "connectWithUs": "Connect with us", + "formIntro": "Fill out the form below and we'll get back to you soon.", + "nameLabel": "Name", + "emailLabel": "Email", + "subjectLabel": "Subject", + "messageLabel": "Message", + "submitButton": "Send Message" +} diff --git a/frontend/src/locales/en/ErrorBoundary.json b/frontend/src/locales/en/ErrorBoundary.json new file mode 100644 index 0000000..a228b77 --- /dev/null +++ b/frontend/src/locales/en/ErrorBoundary.json @@ -0,0 +1,5 @@ +{ + "errorTitle": "Something went wrong.", + "errorMessage": "An unexpected error has occurred. Please try refreshing the page or contact support if the problem persists.", + "refresh": "Refresh" +} diff --git a/frontend/src/locales/en/FAQ.json b/frontend/src/locales/en/FAQ.json new file mode 100644 index 0000000..374d8ab --- /dev/null +++ b/frontend/src/locales/en/FAQ.json @@ -0,0 +1,79 @@ +{ + "faqTitle": "Frequently Asked Questions", + "faqSubtitle": "Find answers to the most common questions about using Smart Rent System", + "categoriesLabel": "Categories", + "categories": { + "general": "General Questions", + "booking": "Booking & Reservations", + "payment": "Payments & Refunds", + "host": "Hosting Questions", + "safety": "Safety & Security", + "account": "Account Management" + }, + "needMoreHelp": "Need more help?", + "needMoreHelpDesc": "If you can't find what you're looking for, our support team is ready to assist.", + "contactSupport": "Contact Support", + "helpCenter": "Help Center", + "helpCenterDesc": "Browse comprehensive help guides, tutorials, and troubleshooting tips for using Smart Rent.", + "visitHelpCenter": "Visit Help Center", + "safetyInfo": "Safety Information", + "safetyInfoDesc": "Learn about our safety protocols, guidelines for guests and hosts, and emergency resources.", + "viewSafetyGuidelines": "View Safety Guidelines", + "reportConcernTitle": "Report a Concern", + "reportConcernDesc": "Need to report a safety issue, policy violation, or other concern about a listing or user?", + "submitReport": "Submit a Report", + "general": { + "what-is-smart-rent": { + "question": "What is Smart Rent System?", + "answer": "Smart Rent System is a platform that connects travelers with unique accommodations around the world. Our platform allows hosts to list their properties, and guests to book these spaces. We provide secure payment processing, verified reviews, and customer support to ensure a smooth experience for everyone." + }, + "how-to-start": { + "question": "How do I get started with Smart Rent?", + "answer": "Getting started is easy! Simply create an account, fill out your profile information, and you can start searching for properties or list your own space. Browse listings by location, price, amenities, and more to find the perfect place for your next trip." + }, + "contact-support": { + "question": "How do I contact customer support?", + "answer": "You can reach our customer support team through multiple channels. Use the Contact page on our website, email us at support@smartrentsystem.com, or call our support line at +1 (800) SMART-RENT. Our team is available 24/7 to assist with any questions or concerns." + }, + "app-available": { + "question": "Is there a mobile app available?", + "answer": "Yes! The Smart Rent System app is available for both iOS and Android devices. Download it from the App Store or Google Play Store to manage your bookings, message hosts or guests, and browse listings on the go." + } + }, + "booking": { + "how-to-book": { + "question": "How do I book a property?", + "answer": "To book a property, search for accommodations in your desired location and dates. Once you find a place you like, click 'Reserve' or 'Book Now' and follow the checkout process. Some properties allow instant booking, while others require approval from the host." + }, + "booking-confirmation": { + "question": "How do I know if my booking is confirmed?", + "answer": "After completing the booking process, you'll receive a confirmation email with all the details of your reservation. You can also view the status of your booking in the 'Trips' section of your account dashboard." + }, + "cancel-booking": { + "question": "How do I cancel a booking?", + "answer": "To cancel a booking, go to the 'Trips' section of your account, find the booking you wish to cancel, and click the 'Cancel' option. The refund amount will depend on the property's cancellation policy, which is displayed before you book and in your reservation details." + }, + "modify-dates": { + "question": "Can I change the dates of my reservation?", + "answer": "Yes, you can request to modify your reservation dates. Go to your 'Trips' page, select the booking you want to change, and click 'Modify Reservation.' Note that this is subject to host approval and availability. Price adjustments may apply based on the new dates." + } + }, + "payment": { + "payment-methods": { + "question": "What payment methods are accepted?", + "answer": "We accept major credit and debit cards (Visa, MasterCard, American Express, Discover), PayPal, and in some regions, Apple Pay and Google Pay. All payments are processed securely through our platform." + }, + "payment-timing": { + "question": "When am I charged for my booking?", + "answer": "For most bookings, you'll be charged the full amount when the host accepts your reservation or immediately if you use Instant Book. For some longer stays or bookings made months in advance, you may have the option to pay in installments." + }, + "security-deposit": { + "question": "What is a security deposit and when is it returned?", + "answer": "A security deposit is an amount held to cover potential damages during your stay. It's not charged unless there's a claim by the host. If no claim is made, the hold on your payment method is released automatically 14 days after check-out." + }, + "refund-process": { + "question": "How long do refunds take to process?", + "answer": "Once a refund is issued, it typically takes 5-10 business days to appear on your original payment method. The exact timing depends on your payment provider and financial institution." + } + } +} diff --git a/frontend/src/locales/en/Help.json b/frontend/src/locales/en/Help.json new file mode 100644 index 0000000..e3da80b --- /dev/null +++ b/frontend/src/locales/en/Help.json @@ -0,0 +1,84 @@ +{ + "helpTitle": "Help Center", + "helpSubtitle": "How can we assist you?", + "searchPlaceholder": "Search for help topics...", + "contactSupport": "Contact Support", + "faq": "Frequently Asked Questions", + "noResults": "No help articles found.", + "backToHome": "Back to Home", + "howCanWeHelp": "How can we help you?", + "findAnswers": "Find answers to your questions or contact our support team", + "searchForAnswers": "Search for answers...", + "helpGuidesTitle": "Help Guides", + "helpGuidesDesc": "Detailed guides on how to use Smart Rent features", + "viewGuides": "View guides", + "safetyInfo": "Safety Information", + "cancellationPolicies": "Cancellation Policies", + "reportConcern": "Report a Concern", + "contactSupportDesc": "Get in touch with our customer support team", + "contactUs": "Contact us", + "communityForum": "Community Forum", + "communityForumDesc": "Connect with other users and share your experiences", + "joinDiscussion": "Join discussion", + "faq": "Frequently Asked Questions", + "categoryGeneral": "General", + "categoryAccount": "Account & Profile", + "categoryBooking": "Booking & Reservations", + "categoryPayment": "Payments & Refunds", + "categoryHosting": "Hosting", + "categorySafety": "Safety & Accessibility", + "generalFaqs": "General FAQs", + "whatIsSmartRent": "What is Smart Rent?", + "howToUseSmartRent": "How do I use Smart Rent?", + "howToContactService": "How do I contact customer service?", + "cantFind": "Can't find what you're looking for?", + "contactOurSupport": "Contact our support team", + "emailSupport": "Email Support", + "emailSupportDesc": "Our email support team is available 24/7 to assist you with any questions or issues.", + "phoneSupport": "Phone Support", + "phoneSupportDesc": "Call our customer service team for immediate assistance during business hours.", + "phoneSupportHours": "Available Monday-Friday, 9am-6pm EST", + "liveChat": "Live Chat", + "liveChatDesc": "Chat with our support team in real-time for quick assistance with your questions.", + "startChat": "Start a chat session", + "available247": "Available 24/7", + "helpGuides": "Help Guides", + "helpGuidesDescription": "Detailed guides on how to use Smart Rent features and services.", + "safetyInformation": "Safety Information", + "cancellationPolicies": "Cancellation Policies", + "reportAConcern": "Report a Concern", + "contactSupport": "Contact Support", + "contactSupportDescription": "Our support team is here to help you with any issues or questions.", + "yourName": "Your Name", + "enterYourName": "Enter your name", + "emailAddress": "Email Address", + "enterYourEmail": "Enter your email", + "subject": "Subject", + "selectASubject": "Select a subject", + "bookingIssue": "Booking Issue", + "paymentProblem": "Payment Problem", + "accountSettings": "Account Settings", + "hostingQuestion": "Hosting Question", + "other": "Other", + "message": "Message", + "describeYourIssueOrQuestion": "Describe your issue or question", + "submitRequest": "Submit Request", + "communityForum": "Community Forum", + "forumDescription": "Connect with other users, share experiences, and get advice from the community.", + "comingSoon": "Coming Soon!", + "forumComingSoonDescription": "Our community forum is currently in development. Check back soon to join discussions with other Smart Rent users!", + "howCanWeHelpYou": "How can we help you?", + "findAnswersOrContactSupport": "Find answers to your questions or contact our support team", + "frequentlyAskedQuestions": "Frequently Asked Questions", + "cantFindWhatYouAreLookingFor": "Can't find what you're looking for?", + "contactOurSupportTeam": "Contact our support team", + "emailSupport": "Email Support", + "emailSupportDescription": "Our email support team is available 24/7 to assist you with any questions or issues.", + "phoneSupport": "Phone Support", + "phoneSupportDescription": "Call our customer service team for immediate assistance during business hours.", + "availableMondayToFriday": "Available Monday-Friday, 9am-6pm EST", + "liveChat": "Live Chat", + "liveChatDescription": "Chat with our support team in real-time for quick assistance with your questions.", + "startAChatSession": "Start a chat session", + "available247": "Available 24/7" +} diff --git a/frontend/src/locales/en/Home.json b/frontend/src/locales/en/Home.json new file mode 100644 index 0000000..431cf82 --- /dev/null +++ b/frontend/src/locales/en/Home.json @@ -0,0 +1,54 @@ +{ + "city-tours": "City Tours", + "city-toursDesc": "Explore with local guides", + "outdoor-adventures": "Outdoor Adventures", + "outdoor-adventuresDesc": "Explore with local guides", + "local-cuisine": "Local Cuisine", + "local-cuisineDesc": "Explore with local guides", + "heroTitle": "Find stays that feel <1>like home", + "heroDescription": "Discover unique homes, apartments, and experiences across the world — handpicked for comfort, style, and unforgettable memories.", + "exploreStays": "Explore stays", + "becomeHost": "Become a host", + + "inspirationTitle": "Inspiration for your next trip", + "inspirationSubtitle": "Explore top destinations with perfect vacation rentals", + + "newYork": "New York", + "newYorkProperties": "120 properties", + "losAngeles": "Los Angeles", + "losAngelesProperties": "94 properties", + "miami": "Miami", + "miamiProperties": "85 properties", + "chicago": "Chicago", + "chicagoProperties": "73 properties", + + "stayAnywhereTitle": "Stay anywhere", + "stayAnywhereSubtitle": "Unique accommodations for every style and budget", + "apartments": "Apartments", + "apartmentsDesc": "Urban comfort", + "houses": "Houses", + "housesDesc": "Entire homes", + "cabins": "Cabins", + "cabinsDesc": "Rustic retreats", + "villas": "Villas", + "villasDesc": "Luxury stays", + + "discoverExperiencesTitle": "Discover experiences", + "discoverExperiencesSubtitle": "Find activities hosted by local experts", + "cityTours": "City Tours", + "cityToursDesc": "Explore with local guides", + "outdoorAdventures": "Outdoor Adventures", + "outdoorAdventuresDesc": "Explore with local guides", + "localCuisine": "Local Cuisine", + "localCuisineDesc": "Explore with local guides", + + "becomeAHostTitle": "Become a host", + "becomeAHostDesc": "Share your space, earn extra income, and connect with guests from around the world.", + "learnMore": "Learn more", + "city-tours": "City Tours", + "city-toursDesc": "Explore with local guides", + "outdoor-adventures": "Outdoor Adventures", + "outdoor-adventuresDesc": "Explore with local guides", + "local-cuisine": "Local Cuisine", + "local-cuisineDesc": "Explore with local guides" +} diff --git a/frontend/src/locales/en/Login.json b/frontend/src/locales/en/Login.json new file mode 100644 index 0000000..1791209 --- /dev/null +++ b/frontend/src/locales/en/Login.json @@ -0,0 +1,11 @@ +{ + "loginTitle": "Log in to your account", + "createAccount": "Or create a new account", + "email": "Email address", + "password": "Password", + "rememberMe": "Remember me", + "forgotPassword": "Forgot your password?", + "login": "Log in", + "orContinueWith": "Or continue with", + "signInWithGoogle": "Sign in with Google" +} diff --git a/frontend/src/locales/en/NotFound.json b/frontend/src/locales/en/NotFound.json new file mode 100644 index 0000000..8d8aa02 --- /dev/null +++ b/frontend/src/locales/en/NotFound.json @@ -0,0 +1,5 @@ +{ + "notFoundTitle": "Page Not Found", + "notFoundMessage": "Sorry, the page you are looking for does not exist.", + "goHome": "Go to Home" +} diff --git a/frontend/src/locales/en/Register.json b/frontend/src/locales/en/Register.json new file mode 100644 index 0000000..0c82823 --- /dev/null +++ b/frontend/src/locales/en/Register.json @@ -0,0 +1,17 @@ +{ + "signInToExistingLink": "sign in to your existing account", + "signUpWithGoogle": "Sign up with Google", + "signUpWithFacebook": "Sign up with Facebook", + "registerTitle": "Create your account", + "signInToExisting": "Or sign in to your existing account", + "firstName": "First name", + "lastName": "Last name", + "username": "Username (optional)", + "usernameHint": "Will use part of your email if left blank", + "email": "Email address", + "password": "Password", + "confirmPassword": "Confirm password", + "agreeTerms": "I agree to the Terms of Service and Privacy Policy", + "register": "Create account", + "orContinueWith": "Or continue with" +} diff --git a/frontend/src/locales/en/ReportConcern.json b/frontend/src/locales/en/ReportConcern.json new file mode 100644 index 0000000..3553a75 --- /dev/null +++ b/frontend/src/locales/en/ReportConcern.json @@ -0,0 +1,51 @@ +{ + "title": "Report a Concern", + "subtitle": "Your safety and satisfaction are our priority. Let us know about any issues or concerns.", + "thankYouTitle": "Thank You for Your Report", + "thankYouMsg1": "We've received your concern and will review it promptly. Our team will reach out to you via email if we need additional information.", + "thankYouMsg2": "Reference Number:", + "returnHome": "Return to Home", + "visitHelp": "Visit Help Center", + "howToTitle": "How to Report a Concern", + "howToDesc": "We take all reports seriously and will investigate each one thoroughly. Please provide as much detail as possible to help us address your concern efficiently.", + "emergency": "For emergencies:", + "emergencyDesc": "If you're experiencing an emergency situation, please contact local emergency services immediately by dialing your local emergency number.", + "submitTitle": "Submit Your Report", + "concernTypeLabel": "Type of Concern *", + "concernTypePlaceholder": "Select type of concern", + "concernTypes": [ + "Safety Concern", + "Potential Fraud", + "Scam or Misleading Listing", + "Discrimination", + "Property Damage", + "Accessibility Issue", + "Account Security", + "Other Concern" + ], + "listingIdLabel": "Listing/Reservation ID (if applicable)", + "listingIdPlaceholder": "e.g., LIST12345 or RES67890", + "listingIdHelp": "This helps us identify the specific listing or reservation your concern relates to.", + "descriptionLabel": "Description of Concern *", + "descriptionPlaceholder": "Please provide as much detail as possible about your concern...", + "attachmentsLabel": "Attachments (Optional)", + "attachmentsUpload": "Upload files", + "attachmentsUploadNoFile": "No file chosen", + "attachmentsOr": "or drag and drop", + "attachmentsHelp": "PNG, JPG, PDF up to 10MB", + "contactTitle": "Your Contact Information", + "nameLabel": "Name *", + "emailLabel": "Email *", + "phoneLabel": "Phone Number (Optional)", + "privacyNotice": "I understand that my information will be processed as described in the <1>Privacy Policy", + "submitBtn": "Submit Report", + "safetyInfoTitle": "Safety Information", + "safetyInfoDesc": "Learn about our safety guidelines and protocols for guests and hosts.", + "helpCenterTitle": "Help Center", + "helpCenterDesc": "Browse our frequently asked questions and help guides.", + "contactSupportTitle": "Contact Support", + "contactSupportDesc": "Get in touch with our customer support team.", + "emergencyLineTitle": "Emergency Line", + "emergencyLineDesc": "Call our emergency support line for urgent matters.", + "additionalResources": "Additional Resources" +} \ No newline at end of file diff --git a/frontend/src/locales/en/Safety.json b/frontend/src/locales/en/Safety.json new file mode 100644 index 0000000..db99b53 --- /dev/null +++ b/frontend/src/locales/en/Safety.json @@ -0,0 +1,48 @@ +{ + "headerTitle": "Your Safety Matters", + "headerSubtitle": "Smart Rent System is committed to creating a safe environment for our hosts and guests", + "commitmentTitle": "Our Commitment to Safety", + "commitmentDesc1": "At Smart Rent System, we prioritize the safety and well-being of our community. We've implemented comprehensive safety measures, verification processes, and support systems to ensure that both hosts and guests can use our platform with confidence and peace of mind.", + "commitmentDesc2": "This page provides information about our safety practices, emergency resources, and guidelines to help you stay safe while using our services.", + "featuresTitle": "Key Safety Features", + "featureVerifiedTitle": "Verified Profiles", + "featureVerifiedDesc": "All users undergo identity verification before they can book or host. This helps ensure that our community members are who they say they are.", + "featurePropertyTitle": "Property Standards", + "featurePropertyDesc": "Properties listed on our platform must meet basic safety requirements including functional smoke and carbon monoxide detectors.", + "featureSupportTitle": "24/7 Support", + "featureSupportDesc": "Our customer support team is available around the clock to assist with any safety concerns or emergencies that may arise.", + "tipsTitle": "Safety Tips", + "tipsGuestsTitle": "For Guests", + "tipsGuests1": "Review property details carefully, including safety features and house rules.", + "tipsGuests2": "Read reviews from previous guests to get insights about the property and host.", + "tipsGuests3": "Keep communication within the Smart Rent System platform for your protection.", + "tipsGuests4": "Familiarize yourself with emergency exits and safety equipment upon arrival.", + "tipsGuests5": "Share your itinerary with a trusted friend or family member.", + "tipsHostsTitle": "For Hosts", + "tipsHosts1": "Install and maintain smoke detectors, carbon monoxide detectors, and fire extinguishers.", + "tipsHosts2": "Provide clear check-in instructions and emergency contact information.", + "tipsHosts3": "Ensure proper locks on all doors and windows, including bedrooms.", + "tipsHosts4": "Create and display an emergency guide with local medical facilities and emergency numbers.", + "tipsHosts5": "Screen guests by reviewing their profiles and communication before accepting bookings.", + "covidTitle": "COVID-19 Safety Measures", + "covidDesc": "While many regions have eased COVID-19 restrictions, we continue to encourage safety practices that help protect our community:", + "covidCleaningTitle": "Enhanced Cleaning Protocol", + "covidCleaningDesc": "We recommend that hosts follow enhanced cleaning procedures between guests, including disinfecting high-touch surfaces and providing hand sanitizer when possible.", + "covidFlexibleTitle": "Flexible Booking Options", + "covidFlexibleDesc": "Many properties offer flexible cancellation policies to accommodate unexpected changes in travel plans due to health concerns.", + "emergencyTitle": "Emergency Resources", + "emergencyImmediateTitle": "Immediate Emergency", + "emergencyImmediateDesc": "For any life-threatening emergency, contact local emergency services immediately:", + "emergencyNumber": "911", + "emergencyNumberNote": "(or appropriate emergency number for your location)", + "emergencySupportTitle": "Smart Rent System Urgent Support", + "emergencySupportDesc": "For urgent situations that aren't life-threatening but require immediate assistance:", + "emergencySupportLineLabel": "Urgent Support Line", + "emergencySupportLine": "+1 (888) 555-0123", + "emergencySupportEmailLabel": "Safety Email", + "emergencySupportEmail": "safety@smartrent.com", + "reportTitle": "Reporting Safety Concerns", + "reportDesc": "If you encounter a safety issue or have concerns about a booking or listing, we encourage you to report it to us immediately. Your reports help us maintain a safe platform for everyone.", + "reportContactSupport": "Contact Support", + "reportVisitHelpCenter": "Visit Help Center" +} diff --git a/frontend/src/locales/en/Terms.json b/frontend/src/locales/en/Terms.json new file mode 100644 index 0000000..e2119b7 --- /dev/null +++ b/frontend/src/locales/en/Terms.json @@ -0,0 +1,75 @@ +{ + "termsTitle": "Terms of Service", + "termsSubtitle": "The rules and guidelines for using Smart Rent System", + "lastUpdated": "Last updated: November 15, 2023", + "welcome": "Welcome to Smart Rent System. These Terms of Service govern your access to and use of the Smart Rent System website, apps, and services. By accessing or using our service, you agree to be bound by these terms.", + "acceptanceTitle": "1. Acceptance of Terms", + "acceptance": "By registering for and/or using the Service in any manner, you agree to these Terms and all other rules, policies, and procedures published by Smart Rent System. These Terms apply to all users of the Service, including hosts, guests, and general visitors.", + "accountTitle": "2. Account Registration", + "account": "To access certain features of the Service, you must register for an account. By registering, you agree to:", + "accountList": [ + "Provide accurate, current, and complete information", + "Maintain and promptly update your account information", + "Maintain the security of your account and password", + "Accept all risks of unauthorized access to your account", + "Notify us immediately of any unauthorized use of your account" + ], + "accountNote": "We reserve the right to refuse service, terminate accounts, or remove content at our sole discretion.", + "contentTitle": "3. Content and Conduct", + "content": "Our Service allows you to post, link, store, share, and otherwise make available certain information, text, graphics, videos, or other material. You are responsible for the content you post and the consequences of sharing it. By posting content, you represent that you have the necessary rights to that content.", + "contentList": [ + "Do not post illegal, harmful, threatening, abusive, or discriminatory content", + "Do not impersonate any person or entity", + "Do not misrepresent your affiliation with any person or entity", + "Do not post private or confidential information of others without permission", + "Do not engage in any conduct that restricts or inhibits anyone’s use or enjoyment of the Service", + "Do not use the Service for any unlawful purpose or in violation of any law", + "Do not upload viruses or other malicious code", + "Do not attempt to circumvent any security feature of the Service" + ], + "bookingTitle": "4. Bookings and Rentals", + "bookingGuest": "As a guest, by making a booking, you agree to:", + "bookingGuestList": [ + "Pay all fees, applicable taxes, and any other charges related to your booking", + "Be responsible for your conduct during your stay", + "Comply with the host’s house rules and checkout procedures", + "Leave the property in the same condition as you found it", + "Report any damage or issues promptly" + ], + "bookingHost": "As a host, by listing your property, you agree to:", + "bookingHostList": [ + "Provide accurate and complete information about your space", + "Maintain your property in a safe and clean condition", + "Respond to booking requests in a timely manner", + "Honor confirmed bookings", + "Comply with all applicable laws, including taxes, zoning, and safety regulations" + ], + "cancellationTitle": "5. Cancellations and Refunds", + "cancellation": "Cancellations and refunds are handled according to the specific cancellation policy selected by the host for their listing. This policy is displayed on each listing prior to booking. By completing a booking, guests acknowledge and agree to the host’s cancellation policy.", + "cancellationMore": "For more information, see our <1>Cancellation Policy.", + "feesTitle": "6. Fees and Payments", + "fees": "Smart Rent System charges service fees to both guests and hosts for use of the platform. These fees are calculated as a percentage of the booking subtotal and are clearly displayed prior to checkout. By using our Service, you agree to pay all applicable fees. All payments are processed securely through our platform.", + "disclaimerTitle": "7. Disclaimers and Limitation of Liability", + "disclaimer": "The Service is provided \"as is\" and \"as available\". Smart Rent System expressly disclaims all warranties of any kind, whether express or implied, including, but not limited to, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement.", + "liability": "In no event shall Smart Rent System be liable for any indirect, incidental, special, consequential, or punitive damages, including, but not limited to, loss of profits, data, use, goodwill, or other intangible losses, resulting from your access to or use of or inability to access or use the Service.", + "indemnificationTitle": "8. Indemnification", + "indemnification": "You agree to defend, indemnify, and hold harmless Smart Rent System, its officers, directors, employees, and agents, from and against any claims, liabilities, damages, losses, and expenses, including reasonable attorneys’ fees, arising out of or in any way connected with your access to or use of the Service, your violation of these Terms, or your violation of the rights of others.", + "modificationsTitle": "9. Modifications to Terms", + "modifications": "We reserve the right to modify these Terms at any time. If we make changes, we will provide notice by posting the updated Terms on our website and updating the \"Last updated\" date. Your continued use of the Service after such notice constitutes your acceptance of the new Terms.", + "lawTitle": "10. Governing Law", + "law": "These Terms shall be governed by and construed in accordance with the laws of [Jurisdiction], without regard to its conflict of law provisions. You agree to submit to the personal and exclusive jurisdiction of the courts located within [Jurisdiction].", + "contactTitle": "11. Contact Information", + "contact": "If you have any questions about these Terms, please contact us at:", + "email": "Email: legal@smartrentsystem.com", + "address": "Mailing Address: 123 Rent Street, City, Country", + "phone": "Phone: +1 (123) 456-7890", + "privacy": "Privacy Policy", + "privacyDesc": "Learn how we collect, use, and protect your information.", + "readPrivacy": "Read Privacy Policy", + "cookie": "Cookie Policy", + "cookieDesc": "Learn how we use cookies and similar technologies on our website.", + "readCookie": "Read Cookie Policy", + "help": "Help Center", + "helpDesc": "Find answers to common questions about our terms and policies.", + "visitHelp": "Visit Help Center" +} diff --git a/frontend/src/locales/en/footer.json b/frontend/src/locales/en/footer.json new file mode 100644 index 0000000..705ead7 --- /dev/null +++ b/frontend/src/locales/en/footer.json @@ -0,0 +1,27 @@ +{ + "companyDescription": "Find your perfect home away from home. SmartRent provides a secure platform for property rental with verified hosts and quality listings.", + "quickLinks": "Quick Links", + "home": "Home", + "aboutUs": "About Us", + "contact": "Contact", + "blog": "Blog", + "support": "Support", + "help": "Help", + "safetyInformation": "Safety Information", + "cancellationOptions": "Cancellation Options", + "reportConcern": "Report Concern", + "faq": "FAQ", + "contactUs": "Contact Us", + "address": "123 Rent Street, City, Country", + "subscribeNewsletter": "Subscribe to Newsletter", + "yourEmail": "Your email", + "subscribing": "Subscribing...", + "subscribeSuccess": "Thank you for subscribing!", + "subscribeError": "Please enter a valid email address.", + "privacyPolicy": "Privacy Policy", + "termsOfService": "Terms of Service", + "cookiePolicy": "Cookie Policy", + "phone": "+1 (123) 456-7890", + "email": "info@smartrentsystem.com", + "allRightsReserved": "All rights reserved." +} diff --git a/frontend/src/locales/en/navbar.json b/frontend/src/locales/en/navbar.json new file mode 100644 index 0000000..0e243d4 --- /dev/null +++ b/frontend/src/locales/en/navbar.json @@ -0,0 +1,19 @@ +{ + "search": "Search", + "login": "Log in", + "signup": "Sign up", + "logout": "Logout", + "profile": "Profile", + "help": "Help", + "becomeHost": "Become a Host", + "messages": "Messages", + "trips": "Trips", + "wishlist": "Wishlist", + "account": "Account", + "settings": "Settings", + "popularSuggestions": ["New York", "Los Angeles", "Miami", "Chicago", "San Francisco"], + "recentSearches": "Recent Searches", + "clear": "Clear", + "popularDestinations": "Popular Destinations", + "explore": "Explore" +} diff --git a/frontend/src/locales/es/About.json b/frontend/src/locales/es/About.json new file mode 100644 index 0000000..d15cee8 --- /dev/null +++ b/frontend/src/locales/es/About.json @@ -0,0 +1,47 @@ +{ + "aboutTitle": "Acerca de Smart Rent System", + "aboutSubtitle": "Haciendo que el alquiler de propiedades sea simple, seguro y agradable para todos.", + "missionTitle": "Nuestra misión", + "missionText": "Smart Rent System se fundó en 2020 con una misión simple: hacer que el alquiler de propiedades sea accesible, seguro y agradable para todos. Notamos que el proceso de alquiler tradicional a menudo era complicado, lento y carecía de transparencia.", + "visionTitle": "Nuestra visión", + "visionText": "Nos propusimos construir una plataforma que conectara a los propietarios con posibles inquilinos de manera fluida, proporcionando herramientas que hicieran que todo el proceso, desde la publicación hasta la reserva y la estancia, fuera lo más sencillo posible. Hoy, Smart Rent System alberga miles de propiedades en todo el mundo, ayudando a los viajeros a encontrar su hogar temporal perfecto y permitiendo a los propietarios maximizar su potencial de alquiler con un mínimo de complicaciones.", + "ourValuesTitle": "Nuestros valores", + "trustSafetyTitle": "Confianza y seguridad", + "trustSafetyDesc": "Creemos en crear un entorno seguro tanto para anfitriones como para huéspedes, con políticas transparentes y transacciones seguras.", + "globalCommunityTitle": "Comunidad global", + "globalCommunityDesc": "Celebramos la diversidad y trabajamos para crear conexiones entre personas de diferentes orígenes y culturas.", + "innovationTitle": "Innovación", + "innovationDesc": "Mejoramos continuamente nuestra plataforma y servicios para brindar la mejor experiencia posible a todos los usuarios.", + "teamTitle": "Conoce a nuestro equipo", + "teamText": "Nuestro equipo está dedicado a garantizar que cada usuario reciba un apoyo excepcional y tenga una experiencia positiva con Smart Rent System.", + "joinOurCommunity": "Únete a nuestra comunidad", + "joinOurCommunityDesc": "Ya sea que busques un lugar para quedarte o quieras compartir tu propiedad con viajeros, Smart Rent System está aquí para ayudarte.", + "exploreProperties": "Ver propiedades", + "becomeHost": "Hazte anfitrión", + "teamMembers": [ + { + "name": "Jane Smith", + "role": "CEO y Fundadora", + "image": "https://randomuser.me/api/portraits/women/32.jpg", + "bio": "Jane fundó Smart Rent System con la visión de transformar la forma en que las personas encuentran y reservan alojamiento en todo el mundo." + }, + { + "name": "Michael Johnson", + "role": "CTO", + "image": "https://randomuser.me/api/portraits/men/42.jpg", + "bio": "Michael lidera nuestro equipo de tecnología, asegurando que nuestra plataforma sea segura, rápida y fácil de usar para anfitriones y huéspedes." + }, + { + "name": "Sarah Chen", + "role": "Jefa de Operaciones", + "image": "https://randomuser.me/api/portraits/women/22.jpg", + "bio": "Sarah supervisa nuestras operaciones diarias, asegurando que tanto anfitriones como huéspedes tengan una experiencia fluida en nuestra plataforma." + }, + { + "name": "James Wilson", + "role": "Responsable de Experiencia del Cliente", + "image": "https://randomuser.me/api/portraits/men/32.jpg", + "bio": "James se dedica a garantizar que cada usuario reciba un soporte excepcional y tenga una experiencia positiva con Smart Rent System." + } + ] +} diff --git a/frontend/src/locales/es/Account.json b/frontend/src/locales/es/Account.json new file mode 100644 index 0000000..05613b3 --- /dev/null +++ b/frontend/src/locales/es/Account.json @@ -0,0 +1,35 @@ +{ + "accountSettings": "Configuración de la cuenta", + "profile": "Perfil", + "payment": "Métodos de pago", + "security": "Seguridad", + "notifications": "Notificaciones", + "privacy": "Privacidad", + "mustBeLoggedIn": "Debes iniciar sesión para ver esta página", + "goToLogin": "Ir a iniciar sesión", + "logOut": "Cerrar sesión", + "profileInformation": "Información del perfil", + "firstName": "Nombre", + "lastName": "Apellido", + "email": "Correo electrónico", + "phone": "Teléfono", + "dateOfBirth": "Fecha de nacimiento", + "street": "Calle", + "city": "Ciudad", + "state": "Estado", + "zipCode": "Código postal", + "country": "País", + "saveChanges": "Guardar cambios", + "profileUpdated": "¡Perfil actualizado con éxito!", + "profileUpdateFailed": "Error al actualizar el perfil: {{error}}", + "profileUpdateError": "Ocurrió un error al actualizar el perfil", + "removeProfileImageConfirm": "¿Seguro que deseas eliminar tu foto de perfil?", + "removeProfileImageError": "Error al eliminar la foto de perfil: {{error}}", + "removeProfileImageGenericError": "Ocurrió un error al eliminar la foto de perfil", + "uploadProfileImageError": "Error al subir la foto de perfil: {{error}}", + "uploadProfileImageGenericError": "Ocurrió un error al subir la foto de perfil", + "areYouSureRemovePayment": "¿Seguro que deseas eliminar este método de pago?", + "default": "Predeterminado", + "setDefault": "Establecer como predeterminado", + "remove": "Eliminar" +} diff --git a/frontend/src/locales/es/BecomeHost.json b/frontend/src/locales/es/BecomeHost.json new file mode 100644 index 0000000..06292ce --- /dev/null +++ b/frontend/src/locales/es/BecomeHost.json @@ -0,0 +1,71 @@ +{ + "becomeAHost": "Conviértete en anfitrión", + "step1Title": "Tipo de propiedad", + "step2Title": "Ubicación", + "step3Title": "Servicios", + "step4Title": "Fotos", + "step5Title": "Detalles y precio", + "propertyType": "Tipo de propiedad", + "propertyCategory": "Categoría de propiedad", + "selectPropertyType": "Selecciona un tipo de propiedad", + "selectPropertyCategory": "Selecciona una categoría de propiedad", + "address": "Dirección", + "city": "Ciudad", + "state": "Estado", + "zipCode": "Código postal", + "country": "País", + "amenities": "Servicios", + "selectAmenities": "Selecciona servicios", + "photos": "Fotos", + "uploadPhotos": "Subir fotos", + "title": "Título", + "description": "Descripción", + "price": "Precio por noche", + "guests": "Huéspedes", + "bedrooms": "Habitaciones", + "beds": "Camas", + "bathrooms": "Baños", + "continue": "Continuar", + "back": "Atrás", + "publishListing": "Publicar anuncio", + "cancel": "Cancelar", + "termsOfService": "Términos de servicio", + "hostPolicies": "Políticas del anfitrión", + "agreeToTerms": "Al convertirte en anfitrión, aceptas nuestros {termsOfService} y {hostPolicies}.", + "uploading": "Subiendo...", + "remove": "Eliminar", + "selectCurrency": "Seleccionar moneda", + "selectLanguage": "Seleccionar idioma" +} + + "house": "Casa", + "apartment": "Apartamento", + "guesthouse": "Casa de huéspedes", + "hotel": "Hotel", + "cabin": "Cabaña", + "villa": "Villa", + "beach": "Playa", + "mountain": "Montaña", + "city": "Ciudad", + "countryside": "Campo", + "lake": "Lago", + "desert": "Desierto", + "wifi": "Wifi", + "kitchen": "Cocina", + "washer": "Lavadora", + "dryer": "Secadora", + "ac": "Aire acondicionado", + "heating": "Calefacción", + "tv": "Televisión", + "parking": "Aparcamiento gratuito", + "pool": "Piscina", + "hottub": "Jacuzzi", + "gym": "Gimnasio", + "pets": "Se permiten mascotas", + "usd": "Dólar estadounidense", + "eur": "Euro", + "gbp": "Libra esterlina", + "jpy": "Yen japonés", + "cad": "Dólar canadiense", + "aud": "Dólar australiano", + "inr": "Rupia india" diff --git a/frontend/src/locales/es/Blog.json b/frontend/src/locales/es/Blog.json new file mode 100644 index 0000000..04eada4 --- /dev/null +++ b/frontend/src/locales/es/Blog.json @@ -0,0 +1,18 @@ +{ + "blogTitle": "Blog de Smart Rent", + "blogSubtitle": "Consejos de viaje, guías de destinos y conocimientos para aprovechar al máximo tus viajes", + "featuredArticles": "Artículos destacados", + "allPosts": "Todas las publicaciones", + "tips": "Consejos de viaje", + "destinations": "Destinos", + "hosting": "Consejos para anfitriones", + "news": "Noticias de la empresa", + "noPostsFound": "No se encontraron publicaciones", + "noPostsAvailable": "Aún no hay publicaciones disponibles en esta categoría.", + "viewAllPosts": "Ver todas las publicaciones", + "subscribeNewsletter": "Suscríbete a nuestro boletín", + "newsletterDesc": "Recibe los últimos consejos de viaje, guías de destinos y noticias de Smart Rent directamente en tu bandeja de entrada.", + "yourEmail": "Tu correo electrónico", + "subscribe": "Suscribirse", + "privacyConsent": "Al suscribirte, aceptas nuestra Política de Privacidad y das tu consentimiento para recibir actualizaciones de nuestra empresa." +} diff --git a/frontend/src/locales/es/Cancellation.json b/frontend/src/locales/es/Cancellation.json new file mode 100644 index 0000000..5844662 --- /dev/null +++ b/frontend/src/locales/es/Cancellation.json @@ -0,0 +1,62 @@ +{ + "cancellationTitle": "Políticas de cancelación", + "cancellationSubtitle": "Opciones transparentes y flexibles para brindarte tranquilidad al reservar", + "understandingPolicies": "Comprendiendo nuestras políticas", + "intro1": "En Smart Rent System, entendemos que los planes pueden cambiar. Nuestras políticas de cancelación están diseñadas para brindar claridad y flexibilidad tanto a huéspedes como a anfitriones.", + "intro2": "Cada propiedad en nuestra plataforma tiene una de las políticas de cancelación que se describen a continuación. La política específica de una propiedad se muestra claramente en la página del anuncio antes de reservar.", + "forGuests": "Para huéspedes", + "forHosts": "Para anfitriones", + "guestIntro": "Al reservar una propiedad, consulta su política de cancelación para comprender tus opciones de reembolso si necesitas cancelar. Esto es lo que significa cada política para ti como huésped:", + "hostIntro": "Como anfitrión, puedes elegir la política de cancelación que mejor se adapte a tu propiedad y necesidades comerciales. Considera lo siguiente al seleccionar una política:", + "flexible": "Flexible", + "moderate": "Moderada", + "strict": "Estrica", + "nonrefundable": "No reembolsable", + "flexibleDesc": "Reembolso completo si se cancela al menos 24 horas antes del check-in", + "moderateDesc": "Reembolso completo si se cancela al menos 5 días antes del check-in", + "strictDesc": "Reembolso completo si se cancela al menos 14 días antes del check-in", + "nonrefundableDesc": "Tarifa especial con descuento sin reembolsos por cancelaciones", + "fullRefund": "Reembolso completo", + "partialRefund": "Reembolso parcial", + "noRefund": "Sin reembolso", + "discountedRate": "Tarifa con descuento", + "travelInsurance": "Seguro de viaje", + "flexibleFull": "Si se cancela al menos 24 horas antes del check-in (2:00 p.m. hora local)", + "flexiblePartial": "Si se cancela con menos de 24 horas de anticipación, la primera noche no es reembolsable pero se reembolsará el 50% de las noches restantes", + "flexibleNone": "Si el huésped llega y decide irse antes, las noches no utilizadas no se reembolsan", + "moderateFull": "Si se cancela al menos 5 días antes del check-in (2:00 p.m. hora local)", + "moderatePartial": "Si se cancela con menos de 5 días de anticipación, la primera noche no es reembolsable pero se reembolsará el 50% de las noches restantes", + "moderateNone": "Si el huésped llega y decide irse antes, las noches no utilizadas no se reembolsan", + "strictFull": "Si se cancela al menos 14 días antes del check-in (2:00 p.m. hora local)", + "strictPartial": "Si se cancela entre 7 y 14 días antes del check-in, recibirás un reembolso del 50% del costo total", + "strictNone": "Si se cancela con menos de 7 días de anticipación o si el huésped no se presenta, no hay reembolso", + "nonrefundableDiscount": "Los huéspedes reciben un 10-15% de descuento sobre la tarifa estándar de la propiedad", + "nonrefundableNone": "No se otorga reembolso por cancelaciones, independientemente de cuándo ocurran", + "nonrefundableInsurance": "Recomendamos encarecidamente que los huéspedes contraten un seguro de viaje al seleccionar esta opción", + "hostTipFlexible": "Esta política es buena para atraer a huéspedes que pueden dudar en comprometerse. Funciona bien para reservas de última hora y ubicaciones con alta competencia.", + "hostTipModerate": "Esta política equilibrada ofrece un buen compromiso entre flexibilidad para los huéspedes y seguridad para los anfitriones. Funciona bien para la mayoría de los tipos de propiedades.", + "hostTipStrict": "Esta política brinda más seguridad a los anfitriones en áreas de alta demanda o durante temporadas altas cuando puede ser difícil volver a reservar las fechas canceladas.", + "hostTipNonrefundable": "Esta opción te permite ofrecer una tarifa con descuento mientras aseguras el pago. Ideal para propiedades de alta demanda o durante temporadas altas.", + "extenuatingCircumstances": "Política de circunstancias atenuantes", + "extenuatingDesc1": "En casos raros, podemos anular la política de cancelación estándar de la propiedad y emitir un reembolso parcial o total. Estas excepciones se hacen para circunstancias imprevistas que:", + "extenuatingList1": "Ocurren antes o durante la estadía", + "extenuatingList2": "Hacen imposible o inseguro completar la estadía", + "extenuatingList3": "Son imprevisibles en el momento de la reserva", + "extenuatingDesc2": "Ejemplos incluyen desastres naturales, emergencias gubernamentales, enfermedades graves o lesiones, o interrupciones en el transporte que hacen imposible llegar al destino.", + "extenuatingDesc3": "Se puede requerir documentación para respaldar las reclamaciones por circunstancias atenuantes.", + "faqsTitle": "Preguntas frecuentes", + "needHelp": "¿Necesitas más ayuda?", + "needHelpDesc": "Si tienes preguntas sobre una reserva específica o necesitas ayuda con una cancelación, nuestro equipo de soporte está aquí para ayudarte.", + "contactSupport": "Contactar soporte", + "visitHelp": "Visitar el centro de ayuda", + "faq1Q": "¿Qué sucede si cancelo mi reserva?", + "faq1A": "Si cancela su reserva, su reembolso dependerá de la política de cancelación de la propiedad. Revise los detalles de la política en su página de reserva o anuncio.", + "faq2Q": "¿Cómo solicito una cancelación?", + "faq2A": "Para solicitar una cancelación, vaya a su página de 'Viajes', seleccione la reserva y haga clic en 'Cancelar'. Siga las instrucciones para completar su solicitud.", + "faq3Q": "¿Cuándo recibiré mi reembolso?", + "faq3A": "Los reembolsos suelen procesarse dentro de los 5 a 10 días hábiles posteriores a la cancelación, según su proveedor de pago.", + "faq4Q": "¿Puedo cambiar las fechas de mi reserva en lugar de cancelar?", + "faq4A": "Sí, puede solicitar modificar las fechas de su reserva desde su página de 'Viajes'. La aprobación está sujeta a la disponibilidad del anfitrión.", + "faq5Q": "¿Qué pasa si tengo una emergencia y necesito cancelar?", + "faq5A": "Si necesita cancelar debido a una emergencia o circunstancia excepcional, comuníquese con nuestro equipo de soporte. Es posible que podamos ofrecer flexibilidad adicional." +} diff --git a/frontend/src/locales/es/Contact.json b/frontend/src/locales/es/Contact.json new file mode 100644 index 0000000..b7dcf42 --- /dev/null +++ b/frontend/src/locales/es/Contact.json @@ -0,0 +1,20 @@ +{ + "contactTitle": "Contáctenos", + "contactSubtitle": "Estamos aquí para ayudar. Contáctenos en cualquier momento.", + "phoneLabel": "Teléfono", + "phoneValue": "+1 (800) 123-4567", + "officeHoursLabel": "Horario de oficina", + "officeHoursValue": "Lun-Vie, 9am-6pm", + "emailContactLabel": "Correo electrónico", + "emailContactValue": "support@smartrent.com", + "successMessage": "¡Su mensaje ha sido enviado exitosamente!", + "addressLabel": "Dirección", + "addressValue": "123 Smart Rent Street\nSan Francisco, CA 94103", + "connectWithUs": "Conéctese con nosotros", + "formIntro": "Complete el formulario a continuación y nos pondremos en contacto pronto.", + "nameLabel": "Nombre", + "emailLabel": "Correo electrónico", + "subjectLabel": "Asunto", + "messageLabel": "Mensaje", + "submitButton": "Enviar mensaje" +} diff --git a/frontend/src/locales/es/ErrorBoundary.json b/frontend/src/locales/es/ErrorBoundary.json new file mode 100644 index 0000000..d68506e --- /dev/null +++ b/frontend/src/locales/es/ErrorBoundary.json @@ -0,0 +1,5 @@ +{ + "errorTitle": "Algo salió mal.", + "errorMessage": "Ha ocurrido un error inesperado. Por favor, actualiza la página o contacta con soporte si el problema persiste.", + "refresh": "Actualizar" +} diff --git a/frontend/src/locales/es/FAQ.json b/frontend/src/locales/es/FAQ.json new file mode 100644 index 0000000..807a896 --- /dev/null +++ b/frontend/src/locales/es/FAQ.json @@ -0,0 +1,95 @@ +{ + "faqTitle": "Preguntas Frecuentes", + "faqSubtitle": "Encuentra respuestas a las preguntas más comunes sobre el uso de Smart Rent System.", + "categoriesLabel": "Categorías", + "categories": { + "general": "Preguntas Generales", + "booking": "Reservas y Reservaciones", + "payment": "Pagos y Reembolsos", + "host": "Preguntas de Anfitrión", + "safety": "Seguridad y Protección", + "account": "Gestión de Cuenta" + }, + "needMoreHelp": "¿Necesitas más ayuda?", + "needMoreHelpDesc": "Si no encuentras lo que buscas, nuestro equipo de soporte está listo para ayudarte.", + "contactSupport": "Contactar Soporte", + "helpCenter": "Centro de Ayuda", + "helpCenterDesc": "Consulta guías de ayuda completas, tutoriales y consejos de solución de problemas para usar Smart Rent.", + "visitHelpCenter": "Visitar Centro de Ayuda", + "safetyInfo": "Información de Seguridad", + "safetyInfoDesc": "Conozca nuestros protocolos de seguridad, pautas para huéspedes y anfitriones, y recursos de emergencia.", + "viewSafetyGuidelines": "Ver Pautas de Seguridad", + "reportConcernTitle": "Reportar un Problema", + "reportConcernDesc": "¿Necesitas reportar un problema de seguridad, una violación de política u otra preocupación sobre un anuncio o usuario?", + "submitReport": "Enviar un Reporte", + "general": { + "what-is-smart-rent": { + "question": "¿Qué es Smart Rent System?", + "answer": "Smart Rent System es una plataforma que conecta viajeros con alojamientos únicos en todo el mundo. Nuestra plataforma permite a los anfitriones listar sus propiedades y a los huéspedes reservar estos espacios. Ofrecemos procesamiento de pagos seguro, reseñas verificadas y soporte al cliente para garantizar una experiencia fluida para todos." + }, + "how-to-start": { + "question": "¿Cómo empiezo con Smart Rent?", + "answer": "¡Empezar es fácil! Simplemente crea una cuenta, completa tu información de perfil y puedes comenzar a buscar propiedades o listar tu propio espacio. Busca anuncios por ubicación, precio, comodidades y más para encontrar el lugar perfecto para tu próximo viaje." + }, + "contact-support": { + "question": "¿Cómo contacto al soporte al cliente?", + "answer": "Puedes contactar a nuestro equipo de soporte al cliente por varios canales. Usa la página de Contacto en nuestro sitio web, envíanos un correo a support@smartrentsystem.com, o llama a nuestra línea de soporte al +1 (800) SMART-RENT. Nuestro equipo está disponible 24/7." + }, + "app-available": { + "question": "¿Hay una aplicación móvil disponible?", + "answer": "¡Sí! La aplicación Smart Rent System está disponible para iOS y Android. Descárgala desde la App Store o Google Play Store para gestionar tus reservas, mensajes y explorar anuncios donde sea." + } + }, + "booking": { + "how-to-book": { + "question": "¿Cómo reservo una propiedad?", + "answer": "Para reservar una propiedad, busca alojamientos en tu ubicación y fechas deseadas. Cuando encuentres un lugar que te guste, haz clic en 'Reservar' o 'Book Now' y sigue el proceso de pago. Algunas propiedades permiten reserva instantánea, otras requieren aprobación del anfitrión." + }, + "booking-confirmation": { + "question": "¿Cómo sé si mi reserva está confirmada?", + "answer": "Después de completar el proceso de reserva, recibirás un correo de confirmación con todos los detalles. También puedes ver el estado de tu reserva en la sección 'Viajes' de tu panel de cuenta." + }, + "cancel-booking": { + "question": "¿Cómo cancelo una reserva?", + "answer": "Para cancelar una reserva, ve a la sección 'Viajes' de tu cuenta, encuentra la reserva que deseas cancelar y haz clic en la opción 'Cancelar'. El monto del reembolso dependerá de la política de cancelación de la propiedad." + }, + "modify-dates": { + "question": "¿Puedo cambiar las fechas de mi reserva?", + "answer": "Sí, puedes solicitar modificar las fechas de tu reserva. Ve a tu página de 'Viajes', selecciona la reserva que deseas cambiar y haz clic en 'Modificar Reserva'. Esto depende de la aprobación del anfitrión y la disponibilidad. Puede haber ajustes de precio según las nuevas fechas." + } + }, + "payment": { + "payment-methods": { + "question": "¿Qué métodos de pago se aceptan?", + "answer": "Aceptamos tarjetas de crédito y débito principales (Visa, MasterCard, American Express, Discover), PayPal, y en algunas regiones, Apple Pay y Google Pay. Todos los pagos se procesan de forma segura a través de nuestra plataforma." + }, + "payment-timing": { + "question": "¿Cuándo se me cobra por mi reserva?", + "answer": "Para la mayoría de las reservas, se te cobrará el monto total cuando el anfitrión acepte tu reserva o inmediatamente si usas Reserva Instantánea. Para algunas estancias largas o reservas anticipadas, puedes tener la opción de pagar en cuotas." + }, + "security-deposit": { + "question": "¿Qué es un depósito de seguridad y cuándo se devuelve?", + "answer": "Un depósito de seguridad es una cantidad retenida para cubrir posibles daños durante tu estancia. No se cobra a menos que el anfitrión haga una reclamación. Si no hay reclamación, la retención en tu método de pago se libera automáticamente 14 días después del check-out." + }, + "refund-process": { + "question": "¿Cuánto tiempo tarda el reembolso en procesarse?", + "answer": "Una vez emitido el reembolso, normalmente tarda de 5 a 10 días hábiles en aparecer en tu método de pago original. El tiempo exacto depende de tu proveedor de pago y entidad financiera." + } + } + , + "categories": { + "general": "Preguntas generales", + "booking": "Reservas y Estancia", + "payment": "Pagos y Reembolsos", + "host": "Preguntas para anfitriones", + "safety": "Seguridad", + "account": "Gestión de la cuenta" + }, + "categoriesLabel": "Categorías", + "general": [], + "booking": [], + "payment": [], + "host": [], + "safety": [], + "account": [] +} diff --git a/frontend/src/locales/es/Help.json b/frontend/src/locales/es/Help.json new file mode 100644 index 0000000..c8a9bfd --- /dev/null +++ b/frontend/src/locales/es/Help.json @@ -0,0 +1,84 @@ +{ + "helpTitle": "Centro de ayuda", + "helpSubtitle": "¿Cómo podemos ayudarte?", + "searchPlaceholder": "Buscar temas de ayuda...", + "contactSupport": "Contactar con soporte", + "faq": "Preguntas frecuentes", + "noResults": "No se encontraron artículos de ayuda.", + "backToHome": "Volver al inicio", + "howCanWeHelp": "¿Cómo podemos ayudarte?", + "findAnswers": "Encuentra respuestas a tus preguntas o contacta a nuestro equipo de soporte", + "searchForAnswers": "Buscar respuestas...", + "helpGuidesTitle": "Guías de ayuda", + "helpGuidesDesc": "Guías detalladas sobre cómo usar las funciones de Smart Rent", + "viewGuides": "Ver guías", + "safetyInfo": "Información de seguridad", + "cancellationPolicies": "Políticas de cancelación", + "reportConcern": "Reportar un problema", + "contactSupportDesc": "Ponte en contacto con nuestro equipo de soporte", + "contactUs": "Contáctanos", + "communityForum": "Foro comunitario", + "communityForumDesc": "Conéctate con otros usuarios y comparte tus experiencias", + "joinDiscussion": "Unirse a la discusión", + "faq": "Preguntas frecuentes", + "categoryGeneral": "General", + "categoryAccount": "Cuenta y perfil", + "categoryBooking": "Reservas", + "categoryPayment": "Pagos y reembolsos", + "categoryHosting": "Anfitrión", + "categorySafety": "Seguridad y accesibilidad", + "generalFaqs": "Preguntas generales", + "whatIsSmartRent": "¿Qué es Smart Rent?", + "howToUseSmartRent": "¿Cómo uso Smart Rent?", + "howToContactService": "¿Cómo contacto al servicio al cliente?", + "cantFind": "¿No encuentras lo que buscas?", + "contactOurSupport": "Contacta a nuestro equipo de soporte", + "emailSupport": "Soporte por correo electrónico", + "emailSupportDesc": "Nuestro equipo de soporte por correo electrónico está disponible 24/7 para ayudarte.", + "phoneSupport": "Soporte telefónico", + "phoneSupportDesc": "Llama a nuestro equipo de atención al cliente para asistencia inmediata durante el horario laboral.", + "phoneSupportHours": "Disponible de lunes a viernes, de 9 a 18 h (EST)", + "liveChat": "Chat en vivo", + "liveChatDesc": "Chatea en tiempo real con nuestro equipo de soporte para obtener ayuda rápida.", + "startChat": "Iniciar una sesión de chat", + "available247": "Disponible 24/7", + "helpGuides": "Guías de ayuda", + "helpGuidesDescription": "Guías detalladas sobre cómo usar las funciones y servicios de Smart Rent.", + "safetyInformation": "Información de seguridad", + "cancellationPolicies": "Políticas de cancelación", + "reportAConcern": "Reportar un problema", + "contactSupport": "Soporte de contacto", + "contactSupportDescription": "Nuestro equipo de soporte está aquí para ayudarte con cualquier problema o pregunta.", + "yourName": "Tu nombre", + "enterYourName": "Ingresa tu nombre", + "emailAddress": "Correo electrónico", + "enterYourEmail": "Ingresa tu correo electrónico", + "subject": "Asunto", + "selectASubject": "Selecciona un asunto", + "bookingIssue": "Problema de reserva", + "paymentProblem": "Problema de pago", + "accountSettings": "Configuración de la cuenta", + "hostingQuestion": "Pregunta sobre anfitrión", + "other": "Otro", + "message": "Mensaje", + "describeYourIssueOrQuestion": "Describe tu problema o pregunta", + "submitRequest": "Enviar solicitud", + "communityForum": "Foro comunitario", + "forumDescription": "Conéctate con otros usuarios, comparte experiencias y obtén consejos de la comunidad.", + "comingSoon": "¡Próximamente!", + "forumComingSoonDescription": "Nuestro foro comunitario está en desarrollo. ¡Vuelve pronto para unirte a las discusiones con otros usuarios de Smart Rent!", + "howCanWeHelpYou": "¿Cómo podemos ayudarte?", + "findAnswersOrContactSupport": "Encuentra respuestas a tus preguntas o contacta a nuestro equipo de soporte", + "frequentlyAskedQuestions": "Preguntas frecuentes", + "cantFindWhatYouAreLookingFor": "¿No encuentras lo que buscas?", + "contactOurSupportTeam": "Contacta a nuestro equipo de soporte", + "emailSupport": "Soporte por correo electrónico", + "emailSupportDescription": "Nuestro equipo de soporte por correo electrónico está disponible 24/7 para ayudarte.", + "phoneSupport": "Soporte telefónico", + "phoneSupportDescription": "Llama a nuestro equipo de atención al cliente para asistencia inmediata durante el horario laboral.", + "availableMondayToFriday": "Disponible de lunes a viernes, de 9 a 18 h (EST)", + "liveChat": "Chat en vivo", + "liveChatDescription": "Chatea en tiempo real con nuestro equipo de soporte para obtener ayuda rápida.", + "startAChatSession": "Iniciar una sesión de chat", + "available247": "Disponible 24/7" +} diff --git a/frontend/src/locales/es/Home.json b/frontend/src/locales/es/Home.json new file mode 100644 index 0000000..f7052c9 --- /dev/null +++ b/frontend/src/locales/es/Home.json @@ -0,0 +1,54 @@ +{ + "city-tours": "Tours por la ciudad", + "city-toursDesc": "Explora con guías locales", + "outdoor-adventures": "Aventuras al aire libre", + "outdoor-adventuresDesc": "Explora con guías locales", + "local-cuisine": "Cocina local", + "local-cuisineDesc": "Explora con guías locales", + "heroTitle": "Encuentra estancias que se sientan <1>como en casa", + "heroDescription": "Descubre casas, apartamentos y experiencias únicas en todo el mundo — seleccionados por comodidad, estilo y recuerdos inolvidables.", + "exploreStays": "Explorar estancias", + "becomeHost": "Hazte anfitrión", + + "inspirationTitle": "Inspiración para tu próximo viaje", + "inspirationSubtitle": "Explora los mejores destinos con alquileres vacacionales perfectos", + + "newYork": "Nueva York", + "newYorkProperties": "120 propiedades", + "losAngeles": "Los Ángeles", + "losAngelesProperties": "94 propiedades", + "miami": "Miami", + "miamiProperties": "85 propiedades", + "chicago": "Chicago", + "chicagoProperties": "73 propiedades", + + "stayAnywhereTitle": "Alójate en cualquier lugar", + "stayAnywhereSubtitle": "Alojamientos únicos para cada estilo y presupuesto", + "apartments": "Apartamentos", + "apartmentsDesc": "Comodidad urbana", + "houses": "Casas", + "housesDesc": "Casas enteras", + "cabins": "Cabañas", + "cabinsDesc": "Retiros rústicos", + "villas": "Villas", + "villasDesc": "Estancias de lujo", + + "discoverExperiencesTitle": "Descubre experiencias", + "discoverExperiencesSubtitle": "Encuentra actividades organizadas por expertos locales", + "cityTours": "Tours por la ciudad", + "cityToursDesc": "Explora con guías locales", + "outdoorAdventures": "Aventuras al aire libre", + "outdoorAdventuresDesc": "Explora con guías locales", + "localCuisine": "Cocina local", + "localCuisineDesc": "Explora con guías locales", + + "becomeAHostTitle": "Hazte anfitrión", + "becomeAHostDesc": "Comparte tu espacio, gana ingresos extra y conecta con huéspedes de todo el mundo.", + "learnMore": "Saber más", + "city-tours": "Tours por la ciudad", + "city-toursDesc": "Explora con guías locales", + "outdoor-adventures": "Aventuras al aire libre", + "outdoor-adventuresDesc": "Explora con guías locales", + "local-cuisine": "Cocina local", + "local-cuisineDesc": "Explora con guías locales" +} diff --git a/frontend/src/locales/es/Login.json b/frontend/src/locales/es/Login.json new file mode 100644 index 0000000..daab2d6 --- /dev/null +++ b/frontend/src/locales/es/Login.json @@ -0,0 +1,11 @@ +{ + "loginTitle": "Inicia sesión en tu cuenta", + "createAccount": "O crea una nueva cuenta", + "email": "Dirección de correo electrónico", + "password": "Contraseña", + "rememberMe": "Recuérdame", + "forgotPassword": "¿Olvidaste tu contraseña?", + "login": "Iniciar sesión", + "orContinueWith": "O continúa con", + "signInWithGoogle": "Iniciar sesión con Google" +} diff --git a/frontend/src/locales/es/NotFound.json b/frontend/src/locales/es/NotFound.json new file mode 100644 index 0000000..3ecdf26 --- /dev/null +++ b/frontend/src/locales/es/NotFound.json @@ -0,0 +1,5 @@ +{ + "notFoundTitle": "Página no encontrada", + "notFoundMessage": "Lo sentimos, la página que buscas no existe.", + "goHome": "Ir al inicio" +} diff --git a/frontend/src/locales/es/Register.json b/frontend/src/locales/es/Register.json new file mode 100644 index 0000000..c3cec72 --- /dev/null +++ b/frontend/src/locales/es/Register.json @@ -0,0 +1,17 @@ +{ + "signInToExistingLink": "inicia sesión en tu cuenta existente", + "signUpWithGoogle": "Regístrate con Google", + "signUpWithFacebook": "Regístrate con Facebook", + "registerTitle": "Crea tu cuenta", + "signInToExisting": "O inicia sesión en tu cuenta existente", + "firstName": "Nombre", + "lastName": "Apellido", + "username": "Nombre de usuario (opcional)", + "usernameHint": "Se usará parte de tu correo si se deja en blanco", + "email": "Dirección de correo electrónico", + "password": "Contraseña", + "confirmPassword": "Confirmar contraseña", + "agreeTerms": "Acepto los Términos de servicio y la Política de privacidad", + "register": "Crear cuenta", + "orContinueWith": "O continúa con" +} diff --git a/frontend/src/locales/es/ReportConcern.json b/frontend/src/locales/es/ReportConcern.json new file mode 100644 index 0000000..7d6a8e5 --- /dev/null +++ b/frontend/src/locales/es/ReportConcern.json @@ -0,0 +1,51 @@ +{ + "title": "Reportar un problema", + "subtitle": "Tu seguridad y satisfacción son nuestra prioridad. Cuéntanos cualquier problema o inquietud.", + "thankYouTitle": "Gracias por tu reporte", + "thankYouMsg1": "Hemos recibido tu inquietud y la revisaremos de inmediato. Nuestro equipo se pondrá en contacto contigo por correo electrónico si necesitamos información adicional.", + "thankYouMsg2": "Número de referencia:", + "returnHome": "Volver al inicio", + "visitHelp": "Visitar el centro de ayuda", + "howToTitle": "Cómo reportar un problema", + "howToDesc": "Tomamos todos los reportes en serio e investigaremos cada uno a fondo. Por favor, proporciona la mayor cantidad de detalles posible para ayudarnos a abordar tu inquietud de manera eficiente.", + "emergency": "En caso de emergencia:", + "emergencyDesc": "Si estás experimentando una situación de emergencia, comunícate inmediatamente con los servicios de emergencia locales marcando tu número de emergencia local.", + "submitTitle": "Enviar tu reporte", + "concernTypeLabel": "Tipo de problema *", + "concernTypePlaceholder": "Selecciona el tipo de problema", + "concernTypes": [ + "Problema de seguridad", + "Posible fraude", + "Estafa o anuncio engañoso", + "Discriminación", + "Daños a la propiedad", + "Problema de accesibilidad", + "Seguridad de la cuenta", + "Otro problema" + ], + "listingIdLabel": "ID de anuncio/reserva (si corresponde)", + "listingIdPlaceholder": "ej: LIST12345 o RES67890", + "listingIdHelp": "Esto nos ayuda a identificar el anuncio o la reserva específica a la que se refiere tu inquietud.", + "descriptionLabel": "Descripción del problema *", + "descriptionPlaceholder": "Por favor, proporciona la mayor cantidad de detalles posible sobre tu problema...", + "attachmentsLabel": "Archivos adjuntos (opcional)", + "attachmentsUpload": "Subir archivos", + "attachmentsOr": "o arrastra y suelta", + "attachmentsHelp": "PNG, JPG, PDF hasta 10MB", + "contactTitle": "Tu información de contacto", + "nameLabel": "Nombre *", + "emailLabel": "Correo electrónico *", + "phoneLabel": "Número de teléfono (opcional)", + "privacyNotice": "Entiendo que mi información será procesada como se describe en la <1>Política de privacidad", + "submitBtn": "Enviar reporte", + "safetyInfoTitle": "Información de seguridad", + "safetyInfoDesc": "Conoce nuestras pautas y protocolos de seguridad para huéspedes y anfitriones.", + "helpCenterTitle": "Centro de ayuda", + "helpCenterDesc": "Consulta nuestras preguntas frecuentes y guías de ayuda.", + "contactSupportTitle": "Contactar soporte", + "contactSupportDesc": "Ponte en contacto con nuestro equipo de atención al cliente.", + "emergencyLineTitle": "Línea de emergencia", + "emergencyLineDesc": "Llama a nuestra línea de emergencia para asuntos urgentes.", + "additionalResources": "Recursos adicionales" + ,"attachmentsUploadNoFile": "Ningún archivo elegido" +} \ No newline at end of file diff --git a/frontend/src/locales/es/Safety.json b/frontend/src/locales/es/Safety.json new file mode 100644 index 0000000..2edf1e8 --- /dev/null +++ b/frontend/src/locales/es/Safety.json @@ -0,0 +1,48 @@ +{ + "headerTitle": "Tu seguridad es importante", + "headerSubtitle": "Smart Rent System está comprometido a crear un entorno seguro para nuestros anfitriones y huéspedes", + "commitmentTitle": "Nuestro compromiso con la seguridad", + "commitmentDesc1": "En Smart Rent System, priorizamos la seguridad y el bienestar de nuestra comunidad. Hemos implementado medidas de seguridad integrales, procesos de verificación y sistemas de apoyo para garantizar que tanto anfitriones como huéspedes puedan usar nuestra plataforma con confianza y tranquilidad.", + "commitmentDesc2": "Esta página proporciona información sobre nuestras prácticas de seguridad, recursos de emergencia y pautas para ayudarte a mantenerte seguro mientras usas nuestros servicios.", + "featuresTitle": "Características clave de seguridad", + "featureVerifiedTitle": "Perfiles verificados", + "featureVerifiedDesc": "Todos los usuarios pasan por una verificación de identidad antes de poder reservar o ser anfitrión. Esto ayuda a garantizar que los miembros de nuestra comunidad sean quienes dicen ser.", + "featurePropertyTitle": "Estándares de propiedad", + "featurePropertyDesc": "Las propiedades listadas en nuestra plataforma deben cumplir con requisitos básicos de seguridad, incluidos detectores de humo y monóxido de carbono funcionales.", + "featureSupportTitle": "Soporte 24/7", + "featureSupportDesc": "Nuestro equipo de soporte está disponible las 24 horas para ayudar con cualquier inquietud o emergencia de seguridad que pueda surgir.", + "tipsTitle": "Consejos de seguridad", + "tipsGuestsTitle": "Para huéspedes", + "tipsGuests1": "Revisa cuidadosamente los detalles de la propiedad, incluidas las características de seguridad y las reglas de la casa.", + "tipsGuests2": "Lee las reseñas de huéspedes anteriores para obtener información sobre la propiedad y el anfitrión.", + "tipsGuests3": "Mantén la comunicación dentro de la plataforma Smart Rent System para tu protección.", + "tipsGuests4": "Familiarízate con las salidas de emergencia y el equipo de seguridad al llegar.", + "tipsGuests5": "Comparte tu itinerario con un amigo o familiar de confianza.", + "tipsHostsTitle": "Para anfitriones", + "tipsHosts1": "Instala y mantén detectores de humo, monóxido de carbono y extintores de incendios.", + "tipsHosts2": "Proporciona instrucciones claras de check-in e información de contacto de emergencia.", + "tipsHosts3": "Asegura cerraduras adecuadas en todas las puertas y ventanas, incluidas las habitaciones.", + "tipsHosts4": "Crea y muestra una guía de emergencia con instalaciones médicas locales y números de emergencia.", + "tipsHosts5": "Filtra a los huéspedes revisando sus perfiles y comunicación antes de aceptar reservas.", + "covidTitle": "Medidas de seguridad COVID-19", + "covidDesc": "Aunque muchas regiones han relajado las restricciones de COVID-19, seguimos fomentando prácticas de seguridad que ayudan a proteger a nuestra comunidad:", + "covidCleaningTitle": "Protocolo de limpieza mejorado", + "covidCleaningDesc": "Recomendamos que los anfitriones sigan procedimientos de limpieza mejorados entre huéspedes, incluyendo la desinfección de superficies de alto contacto y la provisión de desinfectante de manos cuando sea posible.", + "covidFlexibleTitle": "Opciones de reserva flexibles", + "covidFlexibleDesc": "Muchas propiedades ofrecen políticas de cancelación flexibles para acomodar cambios inesperados en los planes de viaje debido a preocupaciones de salud.", + "emergencyTitle": "Recursos de emergencia", + "emergencyImmediateTitle": "Emergencia inmediata", + "emergencyImmediateDesc": "Para cualquier emergencia que ponga en peligro la vida, contacta inmediatamente a los servicios de emergencia locales:", + "emergencyNumber": "112", + "emergencyNumberNote": "(o el número de emergencia apropiado para tu ubicación)", + "emergencySupportTitle": "Soporte urgente Smart Rent System", + "emergencySupportDesc": "Para situaciones urgentes que no ponen en peligro la vida pero requieren asistencia inmediata:", + "emergencySupportLineLabel": "Línea de soporte urgente", + "emergencySupportLine": "+34 912 34 56 78", + "emergencySupportEmailLabel": "Correo de seguridad", + "emergencySupportEmail": "safety@smartrent.com", + "reportTitle": "Reportar preocupaciones de seguridad", + "reportDesc": "Si encuentras un problema de seguridad o tienes inquietudes sobre una reserva o anuncio, te animamos a que lo reportes de inmediato. Tus reportes nos ayudan a mantener una plataforma segura para todos.", + "reportContactSupport": "Contactar soporte", + "reportVisitHelpCenter": "Visitar el centro de ayuda" +} diff --git a/frontend/src/locales/es/Terms.json b/frontend/src/locales/es/Terms.json new file mode 100644 index 0000000..68f8a06 --- /dev/null +++ b/frontend/src/locales/es/Terms.json @@ -0,0 +1,75 @@ +{ + "termsTitle": "Términos de servicio", + "termsSubtitle": "Las reglas y directrices para usar Smart Rent System", + "lastUpdated": "Última actualización: 15 de noviembre de 2023", + "welcome": "Bienvenido a Smart Rent System. Estos Términos de servicio rigen su acceso y uso del sitio web, las aplicaciones y los servicios de Smart Rent System. Al acceder o utilizar nuestro servicio, usted acepta estar sujeto a estos términos.", + "acceptanceTitle": "1. Aceptación de los términos", + "acceptance": "Al registrarse y/o utilizar el Servicio de cualquier manera, usted acepta estos Términos y todas las demás reglas, políticas y procedimientos publicados por Smart Rent System. Estos Términos se aplican a todos los usuarios del Servicio, incluidos anfitriones, huéspedes y visitantes generales.", + "accountTitle": "2. Registro de cuenta", + "account": "Para acceder a ciertas funciones del Servicio, debe registrarse para obtener una cuenta. Al registrarse, usted acepta:", + "accountList": [ + "Proporcionar información precisa, actual y completa", + "Mantener y actualizar rápidamente la información de su cuenta", + "Mantener la seguridad de su cuenta y contraseña", + "Aceptar todos los riesgos de acceso no autorizado a su cuenta", + "Notificarnos inmediatamente cualquier uso no autorizado de su cuenta" + ], + "accountNote": "Nos reservamos el derecho de rechazar el servicio, cancelar cuentas o eliminar contenido a nuestra entera discreción.", + "contentTitle": "3. Contenido y conducta", + "content": "Nuestro Servicio le permite publicar, vincular, almacenar, compartir y poner a disposición cierta información, texto, gráficos, videos u otro material. Usted es responsable del contenido que publica y de las consecuencias de compartirlo. Al publicar contenido, usted declara que tiene los derechos necesarios sobre ese contenido.", + "contentList": [ + "No publique contenido ilegal, dañino, amenazante, abusivo o discriminatorio", + "No suplante a ninguna persona o entidad", + "No declare ni tergiverse su afiliación con una persona o entidad", + "No publique información privada o confidencial de otros sin permiso", + "No realice ninguna conducta que restrinja o inhiba el uso o disfrute del Servicio por parte de cualquier persona", + "No utilice el Servicio para ningún propósito ilegal ni en violación de ninguna ley", + "No cargue virus u otro código malicioso", + "No intente eludir ninguna función de seguridad del Servicio" + ], + "bookingTitle": "4. Reservas y alquileres", + "bookingGuest": "Como huésped, al realizar una reserva, usted acepta:", + "bookingGuestList": [ + "Pagar todas las tarifas, impuestos aplicables y cualquier otro cargo relacionado con su reserva", + "Ser responsable de su conducta durante su estadía", + "Cumplir con las reglas de la casa y los procedimientos de salida del anfitrión", + "Dejar la propiedad en las mismas condiciones en que la encontró", + "Informar cualquier daño o problema de inmediato" + ], + "bookingHost": "Como anfitrión, al listar su propiedad, usted acepta:", + "bookingHostList": [ + "Proporcionar información precisa y completa sobre su espacio", + "Mantener su propiedad en condiciones seguras y limpias", + "Responder a las solicitudes de reserva de manera oportuna", + "Honrar las reservas confirmadas", + "Cumplir con todas las leyes aplicables, incluidos impuestos, zonificación y regulaciones de seguridad" + ], + "cancellationTitle": "5. Cancelaciones y reembolsos", + "cancellation": "Las cancelaciones y reembolsos se manejan de acuerdo con la política de cancelación específica seleccionada por el anfitrión para su anuncio. Esta política se muestra en cada anuncio antes de reservar. Al completar una reserva, los huéspedes reconocen y aceptan la política de cancelación del anfitrión.", + "cancellationMore": "Para obtener más información, consulte nuestra <1>Política de cancelación.", + "feesTitle": "6. Tarifas y pagos", + "fees": "Smart Rent System cobra tarifas de servicio tanto a huéspedes como a anfitriones por el uso de la plataforma. Estas tarifas se calculan como un porcentaje del subtotal de la reserva y se muestran claramente antes del pago. Al utilizar nuestro Servicio, usted acepta pagar todas las tarifas aplicables. Todos los pagos se procesan de forma segura a través de nuestra plataforma.", + "disclaimerTitle": "7. Exenciones de responsabilidad y limitaciones de responsabilidad", + "disclaimer": "El Servicio se proporciona \"tal cual\" y \"según disponibilidad\". Smart Rent System renuncia expresamente a todas las garantías de cualquier tipo, ya sean expresas o implícitas, incluidas, entre otras, las garantías implícitas de comerciabilidad, idoneidad para un propósito particular y no infracción.", + "liability": "En ningún caso Smart Rent System será responsable de ningún daño indirecto, incidental, especial, consecuente o punitivo, incluidos, entre otros, la pérdida de beneficios, datos, uso, buena voluntad u otras pérdidas intangibles, que resulten de su acceso o uso o de la imposibilidad de acceder o utilizar el Servicio.", + "indemnificationTitle": "8. Indemnización", + "indemnification": "Usted acepta defender, indemnizar y eximir de responsabilidad a Smart Rent System, sus funcionarios, directores, empleados y agentes, de cualquier reclamo, responsabilidad, daño, pérdida y gasto, incluidos los honorarios razonables de abogados, que surjan de o estén relacionados con su acceso o uso del Servicio, su violación de estos Términos o su violación de los derechos de otros.", + "modificationsTitle": "9. Modificaciones de los términos", + "modifications": "Nos reservamos el derecho de modificar estos Términos en cualquier momento. Si realizamos cambios, proporcionaremos un aviso publicando los Términos actualizados en nuestro sitio web y actualizando la fecha de \"Última actualización\". Su uso continuado del Servicio después de dicho aviso constituye su aceptación de los nuevos Términos.", + "lawTitle": "10. Ley aplicable", + "law": "Estos Términos se regirán e interpretarán de acuerdo con las leyes de [Jurisdicción], sin tener en cuenta sus disposiciones sobre conflictos de leyes. Usted acepta someterse a la jurisdicción personal y exclusiva de los tribunales ubicados dentro de [Jurisdicción].", + "contactTitle": "11. Información de contacto", + "contact": "Si tiene alguna pregunta sobre estos Términos, contáctenos en:", + "email": "Correo electrónico: legal@smartrentsystem.com", + "address": "Dirección postal: 123 Rent Street, Ciudad, País", + "phone": "Teléfono: +1 (123) 456-7890", + "privacy": "Política de privacidad", + "privacyDesc": "Conozca cómo recopilamos, usamos y protegemos su información.", + "readPrivacy": "Leer política de privacidad", + "cookie": "Política de cookies", + "cookieDesc": "Conozca cómo usamos cookies y tecnologías similares en nuestro sitio web.", + "readCookie": "Leer política de cookies", + "help": "Centro de ayuda", + "helpDesc": "Encuentre respuestas a preguntas comunes sobre nuestros términos y políticas.", + "visitHelp": "Visitar el centro de ayuda" +} diff --git a/frontend/src/locales/es/footer.json b/frontend/src/locales/es/footer.json new file mode 100644 index 0000000..31929c2 --- /dev/null +++ b/frontend/src/locales/es/footer.json @@ -0,0 +1,27 @@ +{ + "companyDescription": "Encuentra tu hogar perfecto lejos de casa. SmartRent proporciona una plataforma segura para el alquiler de propiedades con anfitriones verificados y listados de calidad.", + "quickLinks": "Enlaces rápidos", + "home": "Inicio", + "aboutUs": "Sobre nosotros", + "contact": "Contacto", + "blog": "Blog", + "support": "Soporte", + "help": "Ayuda", + "safetyInformation": "Información de seguridad", + "cancellationOptions": "Opciones de cancelación", + "reportConcern": "Reportar un problema", + "faq": "Preguntas frecuentes", + "contactUs": "Contáctanos", + "address": "123 Calle Renta, Ciudad, País", + "subscribeNewsletter": "Suscribirse al boletín", + "yourEmail": "Tu correo electrónico", + "subscribing": "Suscribiéndose...", + "subscribeSuccess": "¡Gracias por suscribirte!", + "subscribeError": "Por favor, introduce un correo electrónico válido.", + "privacyPolicy": "Política de privacidad", + "termsOfService": "Términos de servicio", + "cookiePolicy": "Política de cookies", + "phone": "+34 123 456 789", + "email": "info@smartrentsystem.com", + "allRightsReserved": "Todos los derechos reservados." +} diff --git a/frontend/src/locales/es/navbar.json b/frontend/src/locales/es/navbar.json new file mode 100644 index 0000000..bf0a52f --- /dev/null +++ b/frontend/src/locales/es/navbar.json @@ -0,0 +1,19 @@ +{ + "search": "Buscar", + "login": "Iniciar sesión", + "signup": "Registrarse", + "logout": "Cerrar sesión", + "profile": "Perfil", + "help": "Ayuda", + "becomeHost": "Hazte anfitrión", + "messages": "Mensajes", + "trips": "Viajes", + "wishlist": "Lista de deseos", + "account": "Cuenta", + "settings": "Configuración", + "popularSuggestions": ["Madrid", "Barcelona", "Valencia", "Sevilla", "Granada"], + "recentSearches": "Búsquedas recientes", + "clear": "Limpiar", + "popularDestinations": "Destinos populares", + "explore": "Explorar" +} diff --git a/frontend/src/locales/fr/About.json b/frontend/src/locales/fr/About.json new file mode 100644 index 0000000..ce10681 --- /dev/null +++ b/frontend/src/locales/fr/About.json @@ -0,0 +1,47 @@ +{ + "aboutTitle": "À propos de Smart Rent System", + "aboutSubtitle": "Rendre la location de biens simple, sûre et agréable pour tous.", + "missionTitle": "Notre mission", + "missionText": "Smart Rent System a été fondé en 2020 avec une mission simple : rendre la location de biens accessible, sûre et agréable pour tous. Nous avons constaté que le processus de location traditionnel était souvent compliqué, long et manquait de transparence.", + "visionTitle": "Notre vision", + "visionText": "Nous avons cherché à créer une plateforme qui connecterait les propriétaires à des locataires potentiels de manière fluide, en fournissant des outils qui rendent l'ensemble du processus - de la publication à la réservation et au séjour - aussi simple que possible. Aujourd'hui, Smart Rent System héberge des milliers de propriétés à travers le monde, aidant les voyageurs à trouver leur logement temporaire idéal tout en permettant aux propriétaires de maximiser leur potentiel locatif avec un minimum de tracas.", + "ourValuesTitle": "Nos valeurs", + "trustSafetyTitle": "Confiance et sécurité", + "trustSafetyDesc": "Nous croyons en la création d'un environnement sûr pour les hôtes et les voyageurs, avec des politiques transparentes et des transactions sécurisées.", + "globalCommunityTitle": "Communauté mondiale", + "globalCommunityDesc": "Nous célébrons la diversité et travaillons à créer des liens entre des personnes de différents horizons et cultures.", + "innovationTitle": "Innovation", + "innovationDesc": "Nous améliorons continuellement notre plateforme et nos services pour offrir la meilleure expérience possible à tous les utilisateurs.", + "teamTitle": "Rencontrez notre équipe", + "teamText": "Notre équipe s'engage à garantir que chaque utilisateur reçoive un soutien exceptionnel et vive une expérience positive avec Smart Rent System.", + "joinOurCommunity": "Rejoignez notre communauté", + "joinOurCommunityDesc": "Que vous cherchiez un endroit où séjourner ou que vous souhaitiez partager votre propriété avec des voyageurs, Smart Rent System est là pour vous aider.", + "exploreProperties": "Voir les propriétés", + "becomeHost": "Devenir hôte", + "teamMembers": [ + { + "name": "Jane Smith", + "role": "PDG & Fondatrice", + "image": "https://randomuser.me/api/portraits/women/32.jpg", + "bio": "Jane a fondé Smart Rent System avec la vision de transformer la façon dont les gens trouvent et réservent un logement dans le monde entier." + }, + { + "name": "Michael Johnson", + "role": "CTO", + "image": "https://randomuser.me/api/portraits/men/42.jpg", + "bio": "Michael dirige notre équipe technique, veillant à ce que notre plateforme soit sécurisée, rapide et conviviale pour les hôtes et les voyageurs." + }, + { + "name": "Sarah Chen", + "role": "Responsable des opérations", + "image": "https://randomuser.me/api/portraits/women/22.jpg", + "bio": "Sarah supervise nos opérations quotidiennes, s'assurant que les hôtes et les voyageurs bénéficient d'une expérience fluide sur notre plateforme." + }, + { + "name": "James Wilson", + "role": "Responsable expérience client", + "image": "https://randomuser.me/api/portraits/men/32.jpg", + "bio": "James s'engage à ce que chaque utilisateur reçoive un soutien exceptionnel et vive une expérience positive avec Smart Rent System." + } + ] +} diff --git a/frontend/src/locales/fr/Account.json b/frontend/src/locales/fr/Account.json new file mode 100644 index 0000000..6c6a3ae --- /dev/null +++ b/frontend/src/locales/fr/Account.json @@ -0,0 +1,35 @@ +{ + "accountSettings": "Paramètres du compte", + "profile": "Profil", + "payment": "Moyens de paiement", + "security": "Sécurité", + "notifications": "Notifications", + "privacy": "Confidentialité", + "mustBeLoggedIn": "Vous devez être connecté pour voir cette page", + "goToLogin": "Aller à la connexion", + "logOut": "Se déconnecter", + "profileInformation": "Informations du profil", + "firstName": "Prénom", + "lastName": "Nom", + "email": "E-mail", + "phone": "Téléphone", + "dateOfBirth": "Date de naissance", + "street": "Rue", + "city": "Ville", + "state": "État", + "zipCode": "Code postal", + "country": "Pays", + "saveChanges": "Enregistrer les modifications", + "profileUpdated": "Profil mis à jour avec succès !", + "profileUpdateFailed": "Échec de la mise à jour du profil : {{error}}", + "profileUpdateError": "Une erreur s'est produite lors de la mise à jour du profil", + "removeProfileImageConfirm": "Êtes-vous sûr de vouloir supprimer votre photo de profil ?", + "removeProfileImageError": "Erreur lors de la suppression de la photo de profil : {{error}}", + "removeProfileImageGenericError": "Erreur lors de la suppression de la photo de profil", + "uploadProfileImageError": "Échec du téléchargement de la photo de profil : {{error}}", + "uploadProfileImageGenericError": "Erreur lors du téléchargement de la photo de profil", + "areYouSureRemovePayment": "Êtes-vous sûr de vouloir supprimer ce moyen de paiement ?", + "default": "Défaut", + "setDefault": "Définir par défaut", + "remove": "Supprimer" +} diff --git a/frontend/src/locales/fr/BecomeHost.json b/frontend/src/locales/fr/BecomeHost.json new file mode 100644 index 0000000..c72d8af --- /dev/null +++ b/frontend/src/locales/fr/BecomeHost.json @@ -0,0 +1,71 @@ +{ + "becomeAHost": "Devenir hôte", + "step1Title": "Type de propriété", + "step2Title": "Emplacement", + "step3Title": "Équipements", + "step4Title": "Photos", + "step5Title": "Détails et prix", + "propertyType": "Type de propriété", + "propertyCategory": "Catégorie de propriété", + "selectPropertyType": "Sélectionnez un type de propriété", + "selectPropertyCategory": "Sélectionnez une catégorie de propriété", + "address": "Adresse", + "city": "Ville", + "state": "État", + "zipCode": "Code postal", + "country": "Pays", + "amenities": "Équipements", + "selectAmenities": "Sélectionnez les équipements", + "photos": "Photos", + "uploadPhotos": "Télécharger des photos", + "title": "Titre", + "description": "Description", + "price": "Prix par nuit", + "guests": "Invités", + "bedrooms": "Chambres", + "beds": "Lits", + "bathrooms": "Salles de bain", + "continue": "Continuer", + "back": "Retour", + "publishListing": "Publier l'annonce", + "cancel": "Annuler", + "termsOfService": "Conditions d'utilisation", + "hostPolicies": "Politiques d'hôte", + "agreeToTerms": "En devenant hôte, vous acceptez nos {termsOfService} et {hostPolicies}.", + "uploading": "Téléchargement...", + "remove": "Supprimer", + "selectCurrency": "Sélectionner la devise", + "selectLanguage": "Sélectionner la langue" +} + + "house": "Maison", + "apartment": "Appartement", + "guesthouse": "Maison d'hôtes", + "hotel": "Hôtel", + "cabin": "Cabane", + "villa": "Villa", + "beach": "Plage", + "mountain": "Montagne", + "city": "Ville", + "countryside": "Campagne", + "lake": "Lac", + "desert": "Désert", + "wifi": "Wifi", + "kitchen": "Cuisine", + "washer": "Lave-linge", + "dryer": "Sèche-linge", + "ac": "Climatisation", + "heating": "Chauffage", + "tv": "Télévision", + "parking": "Parking gratuit", + "pool": "Piscine", + "hottub": "Bain à remous", + "gym": "Salle de sport", + "pets": "Animaux acceptés", + "usd": "Dollar américain", + "eur": "Euro", + "gbp": "Livre sterling", + "jpy": "Yen japonais", + "cad": "Dollar canadien", + "aud": "Dollar australien", + "inr": "Roupie indienne" diff --git a/frontend/src/locales/fr/Blog.json b/frontend/src/locales/fr/Blog.json new file mode 100644 index 0000000..76d56ce --- /dev/null +++ b/frontend/src/locales/fr/Blog.json @@ -0,0 +1,18 @@ +{ + "blogTitle": "Blog Smart Rent", + "blogSubtitle": "Conseils de voyage, guides de destinations et idées pour profiter au maximum de vos voyages", + "featuredArticles": "Articles en vedette", + "allPosts": "Tous les articles", + "tips": "Conseils de voyage", + "destinations": "Destinations", + "hosting": "Conseils d'hébergement", + "news": "Actualités de l'entreprise", + "noPostsFound": "Aucun article trouvé", + "noPostsAvailable": "Aucun article disponible dans cette catégorie pour le moment.", + "viewAllPosts": "Voir tous les articles", + "subscribeNewsletter": "Abonnez-vous à notre newsletter", + "newsletterDesc": "Recevez les derniers conseils de voyage, guides de destinations et actualités Smart Rent directement dans votre boîte de réception.", + "yourEmail": "Votre adresse e-mail", + "subscribe": "S'abonner", + "privacyConsent": "En vous abonnant, vous acceptez notre politique de confidentialité et consentez à recevoir des mises à jour de notre société." +} diff --git a/frontend/src/locales/fr/Cancellation.json b/frontend/src/locales/fr/Cancellation.json new file mode 100644 index 0000000..6aeb226 --- /dev/null +++ b/frontend/src/locales/fr/Cancellation.json @@ -0,0 +1,62 @@ +{ + "cancellationTitle": "Politiques d'annulation", + "cancellationSubtitle": "Des options transparentes et flexibles pour vous offrir la tranquillité d'esprit lors de la réservation", + "understandingPolicies": "Comprendre nos politiques", + "intro1": "Chez Smart Rent System, nous comprenons que les plans peuvent changer. Nos politiques d'annulation sont conçues pour offrir clarté et flexibilité aux invités et aux hôtes.", + "intro2": "Chaque propriété sur notre plateforme a l'une des politiques d'annulation décrites ci-dessous. La politique spécifique d'une propriété est clairement affichée sur la page de l'annonce avant la réservation.", + "forGuests": "Pour les invités", + "forHosts": "Pour les hôtes", + "guestIntro": "Lors de la réservation d'une propriété, vérifiez sa politique d'annulation pour comprendre vos options de remboursement si vous devez annuler. Voici ce que chaque politique signifie pour vous en tant qu'invité :", + "hostIntro": "En tant qu'hôte, vous pouvez choisir la politique d'annulation qui convient le mieux à votre propriété et à vos besoins commerciaux. Considérez les points suivants lors du choix d'une politique :", + "flexible": "Flexible", + "moderate": "Modérée", + "strict": "Stricte", + "nonrefundable": "Non remboursable", + "flexibleDesc": "Remboursement complet si annulé au moins 24 heures avant l'enregistrement", + "moderateDesc": "Remboursement complet si annulé au moins 5 jours avant l'enregistrement", + "strictDesc": "Remboursement complet si annulé au moins 14 jours avant l'enregistrement", + "nonrefundableDesc": "Tarif spécial sans remboursement en cas d'annulation", + "fullRefund": "Remboursement complet", + "partialRefund": "Remboursement partiel", + "noRefund": "Aucun remboursement", + "discountedRate": "Tarif réduit", + "travelInsurance": "Assurance voyage", + "flexibleFull": "Si annulé au moins 24 heures avant l'enregistrement (14h00 heure locale)", + "flexiblePartial": "Si annulé moins de 24 heures avant l'enregistrement, la première nuit n'est pas remboursable mais 50% des nuits restantes seront remboursées", + "flexibleNone": "Si l'invité arrive et décide de partir plus tôt, les nuits non passées ne sont pas remboursées", + "moderateFull": "Si annulé au moins 5 jours avant l'enregistrement (14h00 heure locale)", + "moderatePartial": "Si annulé moins de 5 jours avant l'enregistrement, la première nuit n'est pas remboursable mais 50% des nuits restantes seront remboursées", + "moderateNone": "Si l'invité arrive et décide de partir plus tôt, les nuits non passées ne sont pas remboursées", + "strictFull": "Si annulé au moins 14 jours avant l'enregistrement (14h00 heure locale)", + "strictPartial": "Si annulé entre 7 et 14 jours avant l'enregistrement, vous recevrez un remboursement de 50% du coût total", + "strictNone": "Si annulé moins de 7 jours avant l'enregistrement, ou si l'invité ne se présente pas, aucun remboursement", + "nonrefundableDiscount": "Les invités bénéficient d'une réduction de 10 à 15% sur le tarif standard de la propriété", + "nonrefundableNone": "Aucun remboursement n'est accordé pour les annulations, quelle que soit la date", + "nonrefundableInsurance": "Nous recommandons fortement aux invités de souscrire une assurance voyage lors du choix de cette option", + "hostTipFlexible": "Cette politique est idéale pour attirer les invités hésitants. Elle fonctionne bien pour les réservations de dernière minute et les zones très concurrentielles.", + "hostTipModerate": "Cette politique équilibrée offre un bon compromis entre la flexibilité pour les invités et la sécurité pour les hôtes. Elle convient à la plupart des types de propriétés.", + "hostTipStrict": "Cette politique offre plus de sécurité aux hôtes dans les zones à forte demande ou pendant les saisons de pointe où il peut être difficile de relouer les dates annulées.", + "hostTipNonrefundable": "Cette option vous permet d'offrir un tarif réduit tout en assurant la sécurité du paiement. Idéal pour les propriétés très demandées ou pendant les saisons de pointe.", + "extenuatingCircumstances": "Politique de circonstances exceptionnelles", + "extenuatingDesc1": "Dans de rares cas, nous pouvons déroger à la politique d'annulation standard de la propriété et accorder un remboursement partiel ou total. Ces exceptions sont faites pour des circonstances imprévues qui :", + "extenuatingList1": "Surviennent avant ou pendant le séjour", + "extenuatingList2": "Rendent impossible ou dangereux l'achèvement du séjour", + "extenuatingList3": "Sont imprévisibles au moment de la réservation", + "extenuatingDesc2": "Exemples : catastrophes naturelles, urgences gouvernementales, maladie grave ou blessure, ou perturbations des transports rendant la destination inaccessible.", + "extenuatingDesc3": "Une documentation peut être requise pour appuyer les demandes de circonstances exceptionnelles.", + "faqsTitle": "Questions fréquemment posées", + "needHelp": "Besoin d'aide supplémentaire ?", + "needHelpDesc": "Si vous avez des questions sur une réservation spécifique ou besoin d'aide pour une annulation, notre équipe d'assistance est là pour vous aider.", + "contactSupport": "Contacter le support", + "visitHelp": "Visiter le centre d'aide", + "faq1Q": "Que se passe-t-il si j'annule ma réservation ?", + "faq1A": "Si vous annulez votre réservation, votre remboursement dépendra de la politique d'annulation de la propriété. Veuillez consulter les détails de la politique sur votre page de réservation ou d'annonce.", + "faq2Q": "Comment demander une annulation ?", + "faq2A": "Pour demander une annulation, rendez-vous sur votre page 'Voyages', sélectionnez la réservation et cliquez sur 'Annuler'. Suivez les instructions pour finaliser votre demande.", + "faq3Q": "Quand recevrai-je mon remboursement ?", + "faq3A": "Les remboursements sont généralement traités dans les 5 à 10 jours ouvrables suivant l'annulation, selon votre fournisseur de paiement.", + "faq4Q": "Puis-je modifier mes dates de réservation au lieu d'annuler ?", + "faq4A": "Oui, vous pouvez demander à modifier vos dates de réservation depuis votre page 'Voyages'. L'approbation dépend de la disponibilité de l'hôte.", + "faq5Q": "Que faire en cas d'urgence nécessitant une annulation ?", + "faq5A": "Si vous devez annuler en raison d'une urgence ou de circonstances exceptionnelles, veuillez contacter notre équipe d'assistance. Nous pourrons peut-être offrir une flexibilité supplémentaire." +} diff --git a/frontend/src/locales/fr/Contact.json b/frontend/src/locales/fr/Contact.json new file mode 100644 index 0000000..5284851 --- /dev/null +++ b/frontend/src/locales/fr/Contact.json @@ -0,0 +1,20 @@ +{ + "contactTitle": "Contactez-nous", + "contactSubtitle": "Nous sommes là pour vous aider. Contactez-nous à tout moment.", + "phoneLabel": "Téléphone", + "phoneValue": "+1 (800) 123-4567", + "officeHoursLabel": "Heures de bureau", + "officeHoursValue": "Lun-Ven, 9h-18h", + "emailContactLabel": "Email", + "emailContactValue": "support@smartrent.com", + "successMessage": "Votre message a été envoyé avec succès!", + "addressLabel": "Adresse", + "addressValue": "123 Smart Rent Street\nSan Francisco, CA 94103", + "connectWithUs": "Connectez-vous avec nous", + "formIntro": "Remplissez le formulaire ci-dessous et nous vous répondrons bientôt.", + "nameLabel": "Nom", + "emailLabel": "Email", + "subjectLabel": "Sujet", + "messageLabel": "Message", + "submitButton": "Envoyer le message" +} diff --git a/frontend/src/locales/fr/ErrorBoundary.json b/frontend/src/locales/fr/ErrorBoundary.json new file mode 100644 index 0000000..f2e03c7 --- /dev/null +++ b/frontend/src/locales/fr/ErrorBoundary.json @@ -0,0 +1,5 @@ +{ + "errorTitle": "Une erreur s'est produite.", + "errorMessage": "Une erreur inattendue s'est produite. Veuillez actualiser la page ou contacter le support si le problème persiste.", + "refresh": "Actualiser" +} diff --git a/frontend/src/locales/fr/FAQ.json b/frontend/src/locales/fr/FAQ.json new file mode 100644 index 0000000..26830d5 --- /dev/null +++ b/frontend/src/locales/fr/FAQ.json @@ -0,0 +1,95 @@ +{ + "faqTitle": "Foire Aux Questions", + "faqSubtitle": "Trouvez des réponses aux questions les plus courantes sur l'utilisation de Smart Rent System.", + "categoriesLabel": "Catégories", + "categories": { + "general": "Questions Générales", + "booking": "Réservations et Bookings", + "payment": "Paiements et Remboursements", + "host": "Questions d'Hébergement", + "safety": "Sécurité et Protection", + "account": "Gestion du Compte" + }, + "needMoreHelp": "Besoin de plus d'aide ?", + "needMoreHelpDesc": "Si vous ne trouvez pas ce que vous cherchez, notre équipe d'assistance est prête à vous aider.", + "contactSupport": "Contacter le support", + "helpCenter": "Centre d'aide", + "helpCenterDesc": "Consultez des guides d'aide complets, des tutoriels et des conseils de dépannage pour utiliser Smart Rent.", + "visitHelpCenter": "Visiter le centre d'aide", + "safetyInfo": "Informations de sécurité", + "safetyInfoDesc": "Découvrez nos protocoles de sécurité, nos directives pour les invités et les hôtes, et nos ressources d'urgence.", + "viewSafetyGuidelines": "Voir les consignes de sécurité", + "reportConcernTitle": "Signaler un problème", + "reportConcernDesc": "Besoin de signaler un problème de sécurité, une violation de politique ou une autre préoccupation concernant une annonce ou un utilisateur ?", + "submitReport": "Soumettre un rapport", + "general": { + "what-is-smart-rent": { + "question": "Qu'est-ce que Smart Rent System ?", + "answer": "Smart Rent System est une plateforme qui connecte les voyageurs à des hébergements uniques dans le monde entier. Notre plateforme permet aux hôtes de lister leurs propriétés et aux invités de réserver ces espaces. Nous offrons un traitement sécurisé des paiements, des avis vérifiés et un support client pour garantir une expérience fluide à tous." + }, + "how-to-start": { + "question": "Comment commencer avec Smart Rent ?", + "answer": "Commencer est facile ! Créez simplement un compte, remplissez vos informations de profil et vous pouvez commencer à rechercher des propriétés ou à lister votre propre espace. Parcourez les annonces par emplacement, prix, commodités et plus pour trouver l'endroit idéal pour votre prochain voyage." + }, + "contact-support": { + "question": "Comment contacter le support client ?", + "answer": "Vous pouvez joindre notre équipe de support client par plusieurs moyens. Utilisez la page Contact sur notre site, envoyez-nous un email à support@smartrentsystem.com ou appelez notre ligne d'assistance au +1 (800) SMART-RENT. Notre équipe est disponible 24h/24 et 7j/7." + }, + "app-available": { + "question": "Y a-t-il une application mobile disponible ?", + "answer": "Oui ! L'application Smart Rent System est disponible pour iOS et Android. Téléchargez-la depuis l'App Store ou Google Play Store pour gérer vos réservations, envoyer des messages et parcourir les annonces où que vous soyez." + } + }, + "booking": { + "how-to-book": { + "question": "Comment réserver une propriété ?", + "answer": "Pour réserver une propriété, recherchez des hébergements selon votre lieu et vos dates souhaités. Une fois que vous avez trouvé un endroit qui vous plaît, cliquez sur 'Réserver' ou 'Book Now' et suivez le processus de paiement. Certaines propriétés permettent la réservation instantanée, d'autres nécessitent l'approbation de l'hôte." + }, + "booking-confirmation": { + "question": "Comment savoir si ma réservation est confirmée ?", + "answer": "Après avoir terminé le processus de réservation, vous recevrez un email de confirmation avec tous les détails. Vous pouvez aussi voir le statut de votre réservation dans la section 'Voyages' de votre tableau de bord." + }, + "cancel-booking": { + "question": "Comment annuler une réservation ?", + "answer": "Pour annuler une réservation, allez dans la section 'Voyages' de votre compte, trouvez la réservation à annuler et cliquez sur 'Annuler'. Le montant du remboursement dépendra de la politique d'annulation de la propriété." + }, + "modify-dates": { + "question": "Puis-je modifier les dates de ma réservation ?", + "answer": "Oui, vous pouvez demander à modifier les dates de votre réservation. Allez sur votre page 'Voyages', sélectionnez la réservation à modifier et cliquez sur 'Modifier la réservation'. Cela dépend de l'approbation de l'hôte et de la disponibilité. Des ajustements de prix peuvent s'appliquer." + } + }, + "payment": { + "payment-methods": { + "question": "Quels modes de paiement sont acceptés ?", + "answer": "Nous acceptons les principales cartes de crédit et de débit (Visa, MasterCard, American Express, Discover), PayPal, et dans certaines régions, Apple Pay et Google Pay. Tous les paiements sont traités de manière sécurisée via notre plateforme." + }, + "payment-timing": { + "question": "Quand suis-je facturé pour ma réservation ?", + "answer": "Pour la plupart des réservations, vous serez facturé du montant total lorsque l'hôte accepte votre réservation ou immédiatement si vous utilisez la réservation instantanée. Pour certains séjours plus longs ou réservations anticipées, vous pouvez avoir la possibilité de payer en plusieurs fois." + }, + "security-deposit": { + "question": "Qu'est-ce qu'un dépôt de garantie et quand est-il rendu ?", + "answer": "Un dépôt de garantie est une somme retenue pour couvrir d'éventuels dommages pendant votre séjour. Il n'est facturé que s'il y a une réclamation de l'hôte. Si aucune réclamation n'est faite, la retenue sur votre moyen de paiement est levée automatiquement 14 jours après le départ." + }, + "refund-process": { + "question": "Combien de temps faut-il pour traiter un remboursement ?", + "answer": "Une fois le remboursement effectué, il faut généralement 5 à 10 jours ouvrables pour qu'il apparaisse sur votre moyen de paiement. Le délai exact dépend de votre fournisseur de paiement et de votre banque." + } + } + , + "categories": { + "general": "Questions générales", + "booking": "Réservation & Séjour", + "payment": "Paiement & Remboursements", + "host": "Questions d'hôte", + "safety": "Sécurité", + "account": "Gestion du compte" + }, + "categoriesLabel": "Catégories", + "general": [], + "booking": [], + "payment": [], + "host": [], + "safety": [], + "account": [] +} diff --git a/frontend/src/locales/fr/Help.json b/frontend/src/locales/fr/Help.json new file mode 100644 index 0000000..558c92a --- /dev/null +++ b/frontend/src/locales/fr/Help.json @@ -0,0 +1,84 @@ +{ + "helpTitle": "Centre d'aide", + "helpSubtitle": "Comment pouvons-nous vous aider ?", + "searchPlaceholder": "Rechercher des sujets d'aide...", + "contactSupport": "Contacter le support", + "faq": "Questions fréquemment posées", + "noResults": "Aucun article d'aide trouvé.", + "backToHome": "Retour à l'accueil", + "howCanWeHelp": "Comment pouvons-nous vous aider ?", + "findAnswers": "Trouvez des réponses à vos questions ou contactez notre équipe d'assistance", + "searchForAnswers": "Rechercher des réponses...", + "helpGuidesTitle": "Guides d'aide", + "helpGuidesDesc": "Guides détaillés sur l'utilisation des fonctionnalités de Smart Rent", + "viewGuides": "Voir les guides", + "safetyInfo": "Informations de sécurité", + "cancellationPolicies": "Politiques d'annulation", + "reportConcern": "Signaler un problème", + "contactSupportDesc": "Contactez notre équipe d'assistance clientèle", + "contactUs": "Contactez-nous", + "communityForum": "Forum communautaire", + "communityForumDesc": "Connectez-vous avec d'autres utilisateurs et partagez vos expériences", + "joinDiscussion": "Rejoindre la discussion", + "faq": "Foire aux questions", + "categoryGeneral": "Général", + "categoryAccount": "Compte & Profil", + "categoryBooking": "Réservations", + "categoryPayment": "Paiements & Remboursements", + "categoryHosting": "Hébergement", + "categorySafety": "Sécurité & Accessibilité", + "generalFaqs": "FAQ générales", + "whatIsSmartRent": "Qu'est-ce que Smart Rent ?", + "howToUseSmartRent": "Comment utiliser Smart Rent ?", + "howToContactService": "Comment contacter le service client ?", + "cantFind": "Vous ne trouvez pas ce que vous cherchez ?", + "contactOurSupport": "Contactez notre équipe d'assistance", + "emailSupport": "Assistance par e-mail", + "emailSupportDesc": "Notre équipe d'assistance par e-mail est disponible 24h/24 et 7j/7 pour répondre à vos questions.", + "phoneSupport": "Assistance téléphonique", + "phoneSupportDesc": "Appelez notre service client pour une assistance immédiate pendant les heures ouvrables.", + "phoneSupportHours": "Disponible du lundi au vendredi, de 9h à 18h (EST)", + "liveChat": "Chat en direct", + "liveChatDesc": "Discutez en temps réel avec notre équipe d'assistance pour une aide rapide.", + "startChat": "Démarrer une session de chat", + "available247": "Disponible 24h/24 et 7j/7", + "helpGuides": "Guides d'aide", + "helpGuidesDescription": "Guides détaillés sur l'utilisation des fonctionnalités et services Smart Rent.", + "safetyInformation": "Informations de sécurité", + "cancellationPolicies": "Politiques d'annulation", + "reportAConcern": "Signaler un problème", + "contactSupport": "Contacter le support", + "contactSupportDescription": "Notre équipe d'assistance est là pour vous aider avec toutes vos questions ou problèmes.", + "yourName": "Votre nom", + "enterYourName": "Entrez votre nom", + "emailAddress": "Adresse e-mail", + "enterYourEmail": "Entrez votre e-mail", + "subject": "Sujet", + "selectASubject": "Sélectionnez un sujet", + "bookingIssue": "Problème de réservation", + "paymentProblem": "Problème de paiement", + "accountSettings": "Paramètres du compte", + "hostingQuestion": "Question sur l'hébergement", + "other": "Autre", + "message": "Message", + "describeYourIssueOrQuestion": "Décrivez votre problème ou question", + "submitRequest": "Envoyer la demande", + "communityForum": "Forum communautaire", + "forumDescription": "Connectez-vous avec d'autres utilisateurs, partagez vos expériences et obtenez des conseils de la communauté.", + "comingSoon": "Bientôt disponible !", + "forumComingSoonDescription": "Notre forum communautaire est en cours de développement. Revenez bientôt pour participer aux discussions avec d'autres utilisateurs Smart Rent !", + "howCanWeHelpYou": "Comment pouvons-nous vous aider ?", + "findAnswersOrContactSupport": "Trouvez des réponses à vos questions ou contactez notre équipe d'assistance", + "frequentlyAskedQuestions": "Foire aux questions", + "cantFindWhatYouAreLookingFor": "Vous ne trouvez pas ce que vous cherchez ?", + "contactOurSupportTeam": "Contactez notre équipe d'assistance", + "emailSupport": "Assistance par e-mail", + "emailSupportDescription": "Notre équipe d'assistance par e-mail est disponible 24h/24 et 7j/7 pour répondre à vos questions.", + "phoneSupport": "Assistance téléphonique", + "phoneSupportDescription": "Appelez notre service client pour une assistance immédiate pendant les heures ouvrables.", + "availableMondayToFriday": "Disponible du lundi au vendredi, de 9h à 18h (EST)", + "liveChat": "Chat en direct", + "liveChatDescription": "Discutez en temps réel avec notre équipe d'assistance pour une aide rapide.", + "startAChatSession": "Démarrer une session de chat", + "available247": "Disponible 24h/24 et 7j/7" +} diff --git a/frontend/src/locales/fr/Home.json b/frontend/src/locales/fr/Home.json new file mode 100644 index 0000000..cc76395 --- /dev/null +++ b/frontend/src/locales/fr/Home.json @@ -0,0 +1,54 @@ +{ + "city-tours": "Visites de la ville", + "city-toursDesc": "Explorez avec des guides locaux", + "outdoor-adventures": "Aventures en plein air", + "outdoor-adventuresDesc": "Explorez avec des guides locaux", + "local-cuisine": "Cuisine locale", + "local-cuisineDesc": "Explorez avec des guides locaux", + "heroTitle": "Trouvez des séjours qui se sentent <1>comme à la maison", + "heroDescription": "Découvrez des maisons, appartements et expériences uniques à travers le monde — sélectionnés pour le confort, le style et des souvenirs inoubliables.", + "exploreStays": "Explorer les séjours", + "becomeHost": "Devenir hôte", + + "inspirationTitle": "Inspiration pour votre prochain voyage", + "inspirationSubtitle": "Explorez les meilleures destinations avec des locations de vacances parfaites", + + "newYork": "New York", + "newYorkProperties": "120 propriétés", + "losAngeles": "Los Angeles", + "losAngelesProperties": "94 propriétés", + "miami": "Miami", + "miamiProperties": "85 propriétés", + "chicago": "Chicago", + "chicagoProperties": "73 propriétés", + + "stayAnywhereTitle": "Séjournez partout", + "stayAnywhereSubtitle": "Hébergements uniques pour tous les styles et budgets", + "apartments": "Appartements", + "apartmentsDesc": "Confort urbain", + "houses": "Maisons", + "housesDesc": "Maisons entières", + "cabins": "Cabanes", + "cabinsDesc": "Retraites rustiques", + "villas": "Villas", + "villasDesc": "Séjours de luxe", + + "discoverExperiencesTitle": "Découvrez des expériences", + "discoverExperiencesSubtitle": "Trouvez des activités animées par des experts locaux", + "cityTours": "Visites de la ville", + "cityToursDesc": "Explorez avec des guides locaux", + "outdoorAdventures": "Aventures en plein air", + "outdoorAdventuresDesc": "Explorez avec des guides locaux", + "localCuisine": "Cuisine locale", + "localCuisineDesc": "Explorez avec des guides locaux", + + "becomeAHostTitle": "Devenez hôte", + "becomeAHostDesc": "Partagez votre espace, gagnez un revenu supplémentaire et connectez-vous avec des voyageurs du monde entier.", + "learnMore": "En savoir plus", + "city-tours": "Visites de la ville", + "city-toursDesc": "Explorez avec des guides locaux", + "outdoor-adventures": "Aventures en plein air", + "outdoor-adventuresDesc": "Explorez avec des guides locaux", + "local-cuisine": "Cuisine locale", + "local-cuisineDesc": "Explorez avec des guides locaux" +} diff --git a/frontend/src/locales/fr/Login.json b/frontend/src/locales/fr/Login.json new file mode 100644 index 0000000..e0830ee --- /dev/null +++ b/frontend/src/locales/fr/Login.json @@ -0,0 +1,11 @@ +{ + "loginTitle": "Connectez-vous à votre compte", + "createAccount": "Ou créez un nouveau compte", + "email": "Adresse e-mail", + "password": "Mot de passe", + "rememberMe": "Se souvenir de moi", + "forgotPassword": "Mot de passe oublié ?", + "login": "Connexion", + "orContinueWith": "Ou continuer avec", + "signInWithGoogle": "Se connecter avec Google" +} diff --git a/frontend/src/locales/fr/NotFound.json b/frontend/src/locales/fr/NotFound.json new file mode 100644 index 0000000..16f1008 --- /dev/null +++ b/frontend/src/locales/fr/NotFound.json @@ -0,0 +1,5 @@ +{ + "notFoundTitle": "Page non trouvée", + "notFoundMessage": "Désolé, la page que vous recherchez n'existe pas.", + "goHome": "Aller à l'accueil" +} diff --git a/frontend/src/locales/fr/Register.json b/frontend/src/locales/fr/Register.json new file mode 100644 index 0000000..ec752b6 --- /dev/null +++ b/frontend/src/locales/fr/Register.json @@ -0,0 +1,17 @@ +{ + "signInToExistingLink": "connectez-vous à votre compte existant", + "signUpWithGoogle": "S'inscrire avec Google", + "signUpWithFacebook": "S'inscrire avec Facebook", + "registerTitle": "Créez votre compte", + "signInToExisting": "Ou connectez-vous à votre compte existant", + "firstName": "Prénom", + "lastName": "Nom de famille", + "username": "Nom d'utilisateur (optionnel)", + "usernameHint": "Utilisera une partie de votre e-mail si laissé vide", + "email": "Adresse e-mail", + "password": "Mot de passe", + "confirmPassword": "Confirmez le mot de passe", + "agreeTerms": "J'accepte les Conditions d'utilisation et la Politique de confidentialité", + "register": "Créer un compte", + "orContinueWith": "Ou continuer avec" +} diff --git a/frontend/src/locales/fr/ReportConcern.json b/frontend/src/locales/fr/ReportConcern.json new file mode 100644 index 0000000..01dc0c9 --- /dev/null +++ b/frontend/src/locales/fr/ReportConcern.json @@ -0,0 +1,51 @@ +{ + "title": "Signaler un problème", + "subtitle": "Votre sécurité et votre satisfaction sont notre priorité. Faites-nous part de tout problème ou préoccupation.", + "thankYouTitle": "Merci pour votre signalement", + "thankYouMsg1": "Nous avons bien reçu votre préoccupation et l'examinerons rapidement. Notre équipe vous contactera par e-mail si nous avons besoin d'informations supplémentaires.", + "thankYouMsg2": "Numéro de référence :", + "returnHome": "Retour à l'accueil", + "visitHelp": "Visiter le centre d'aide", + "howToTitle": "Comment signaler un problème", + "howToDesc": "Nous prenons tous les signalements au sérieux et enquêterons sur chacun d'eux de manière approfondie. Veuillez fournir autant de détails que possible pour nous aider à traiter votre préoccupation efficacement.", + "emergency": "En cas d'urgence :", + "emergencyDesc": "Si vous êtes en situation d'urgence, veuillez contacter immédiatement les services d'urgence locaux en composant votre numéro d'urgence local.", + "submitTitle": "Soumettre votre signalement", + "concernTypeLabel": "Type de problème *", + "concernTypePlaceholder": "Sélectionnez le type de problème", + "concernTypes": [ + "Problème de sécurité", + "Fraude potentielle", + "Arnaque ou annonce trompeuse", + "Discrimination", + "Dommages matériels", + "Problème d'accessibilité", + "Sécurité du compte", + "Autre problème" + ], + "listingIdLabel": "ID de l'annonce/réservation (le cas échéant)", + "listingIdPlaceholder": "ex : LIST12345 ou RES67890", + "listingIdHelp": "Cela nous aide à identifier l'annonce ou la réservation concernée par votre signalement.", + "descriptionLabel": "Description du problème *", + "descriptionPlaceholder": "Veuillez fournir autant de détails que possible sur votre problème...", + "attachmentsLabel": "Pièces jointes (optionnel)", + "attachmentsUpload": "Télécharger des fichiers", + "attachmentsOr": "ou glisser-déposer", + "attachmentsHelp": "PNG, JPG, PDF jusqu'à 10 Mo", + "contactTitle": "Vos coordonnées", + "nameLabel": "Nom *", + "emailLabel": "E-mail *", + "phoneLabel": "Numéro de téléphone (optionnel)", + "privacyNotice": "Je comprends que mes informations seront traitées comme décrit dans la <1>Politique de confidentialité", + "submitBtn": "Soumettre le signalement", + "safetyInfoTitle": "Informations de sécurité", + "safetyInfoDesc": "Découvrez nos consignes et protocoles de sécurité pour les invités et les hôtes.", + "helpCenterTitle": "Centre d'aide", + "helpCenterDesc": "Consultez nos questions fréquentes et nos guides d'aide.", + "contactSupportTitle": "Contacter le support", + "contactSupportDesc": "Contactez notre équipe d'assistance clientèle.", + "emergencyLineTitle": "Ligne d'urgence", + "emergencyLineDesc": "Appelez notre ligne d'urgence pour les situations urgentes.", + "additionalResources": "Ressources supplémentaires" + ,"attachmentsUploadNoFile": "Aucun fichier choisi" +} \ No newline at end of file diff --git a/frontend/src/locales/fr/Safety.json b/frontend/src/locales/fr/Safety.json new file mode 100644 index 0000000..801d330 --- /dev/null +++ b/frontend/src/locales/fr/Safety.json @@ -0,0 +1,48 @@ +{ + "headerTitle": "Votre sécurité compte", + "headerSubtitle": "Smart Rent System s'engage à créer un environnement sûr pour nos hôtes et invités", + "commitmentTitle": "Notre engagement envers la sécurité", + "commitmentDesc1": "Chez Smart Rent System, nous accordons la priorité à la sécurité et au bien-être de notre communauté. Nous avons mis en place des mesures de sécurité complètes, des processus de vérification et des systèmes de soutien pour garantir que les hôtes et les invités puissent utiliser notre plateforme en toute confiance et tranquillité d'esprit.", + "commitmentDesc2": "Cette page fournit des informations sur nos pratiques de sécurité, les ressources d'urgence et les directives pour vous aider à rester en sécurité lors de l'utilisation de nos services.", + "featuresTitle": "Principales fonctionnalités de sécurité", + "featureVerifiedTitle": "Profils vérifiés", + "featureVerifiedDesc": "Tous les utilisateurs sont soumis à une vérification d'identité avant de pouvoir réserver ou héberger. Cela permet de garantir que les membres de notre communauté sont bien ceux qu'ils prétendent être.", + "featurePropertyTitle": "Normes de propriété", + "featurePropertyDesc": "Les propriétés listées sur notre plateforme doivent répondre à des exigences de sécurité de base, y compris des détecteurs de fumée et de monoxyde de carbone fonctionnels.", + "featureSupportTitle": "Support 24/7", + "featureSupportDesc": "Notre équipe d'assistance est disponible à tout moment pour aider en cas de préoccupations ou d'urgences liées à la sécurité.", + "tipsTitle": "Conseils de sécurité", + "tipsGuestsTitle": "Pour les invités", + "tipsGuests1": "Examinez attentivement les détails de la propriété, y compris les caractéristiques de sécurité et le règlement intérieur.", + "tipsGuests2": "Lisez les avis des anciens invités pour obtenir des informations sur la propriété et l'hôte.", + "tipsGuests3": "Gardez la communication sur la plateforme Smart Rent System pour votre protection.", + "tipsGuests4": "Familiarisez-vous avec les sorties de secours et l'équipement de sécurité dès votre arrivée.", + "tipsGuests5": "Partagez votre itinéraire avec un ami ou un membre de la famille de confiance.", + "tipsHostsTitle": "Pour les hôtes", + "tipsHosts1": "Installez et entretenez des détecteurs de fumée, de monoxyde de carbone et des extincteurs.", + "tipsHosts2": "Fournissez des instructions claires pour l'enregistrement et des informations de contact d'urgence.", + "tipsHosts3": "Assurez-vous que toutes les portes et fenêtres, y compris les chambres, sont équipées de serrures appropriées.", + "tipsHosts4": "Créez et affichez un guide d'urgence avec les établissements médicaux locaux et les numéros d'urgence.", + "tipsHosts5": "Sélectionnez les invités en examinant leurs profils et communications avant d'accepter les réservations.", + "covidTitle": "Mesures de sécurité COVID-19", + "covidDesc": "Bien que de nombreuses régions aient assoupli les restrictions COVID-19, nous continuons d'encourager les pratiques de sécurité qui protègent notre communauté :", + "covidCleaningTitle": "Protocole de nettoyage renforcé", + "covidCleaningDesc": "Nous recommandons aux hôtes de suivre des procédures de nettoyage renforcées entre les invités, notamment la désinfection des surfaces fréquemment touchées et la mise à disposition de désinfectant pour les mains lorsque cela est possible.", + "covidFlexibleTitle": "Options de réservation flexibles", + "covidFlexibleDesc": "De nombreuses propriétés offrent des politiques d'annulation flexibles pour s'adapter aux changements imprévus de plans de voyage liés à la santé.", + "emergencyTitle": "Ressources d'urgence", + "emergencyImmediateTitle": "Urgence immédiate", + "emergencyImmediateDesc": "En cas d'urgence mettant la vie en danger, contactez immédiatement les services d'urgence locaux :", + "emergencyNumber": "112", + "emergencyNumberNote": "(ou le numéro d'urgence approprié pour votre emplacement)", + "emergencySupportTitle": "Support urgent Smart Rent System", + "emergencySupportDesc": "Pour les situations urgentes qui ne mettent pas la vie en danger mais nécessitent une assistance immédiate :", + "emergencySupportLineLabel": "Ligne de support urgent", + "emergencySupportLine": "+33 1 23 45 67 89", + "emergencySupportEmailLabel": "Email sécurité", + "emergencySupportEmail": "safety@smartrent.com", + "reportTitle": "Signaler des préoccupations de sécurité", + "reportDesc": "Si vous rencontrez un problème de sécurité ou avez des préoccupations concernant une réservation ou une annonce, nous vous encourageons à nous le signaler immédiatement. Vos signalements nous aident à maintenir une plateforme sûre pour tous.", + "reportContactSupport": "Contacter le support", + "reportVisitHelpCenter": "Visiter le centre d'aide" +} diff --git a/frontend/src/locales/fr/Terms.json b/frontend/src/locales/fr/Terms.json new file mode 100644 index 0000000..c6886b1 --- /dev/null +++ b/frontend/src/locales/fr/Terms.json @@ -0,0 +1,75 @@ +{ + "termsTitle": "Conditions d'utilisation", + "termsSubtitle": "Les règles et directives pour utiliser Smart Rent System", + "lastUpdated": "Dernière mise à jour : 15 novembre 2023", + "welcome": "Bienvenue sur Smart Rent System. Ces conditions d'utilisation régissent votre accès et votre utilisation du site Web, des applications et des services Smart Rent System. En accédant ou en utilisant notre service, vous acceptez d'être lié par ces conditions.", + "acceptanceTitle": "1. Acceptation des conditions", + "acceptance": "En vous inscrivant et/ou en utilisant le Service de quelque manière que ce soit, vous acceptez ces Conditions et toutes les autres règles, politiques et procédures publiées par Smart Rent System. Ces Conditions s'appliquent à tous les utilisateurs du Service, y compris les hôtes, les invités et les visiteurs.", + "accountTitle": "2. Inscription au compte", + "account": "Pour accéder à certaines fonctionnalités du Service, vous devez créer un compte. Lors de votre inscription, vous acceptez de :", + "accountList": [ + "Fournir des informations exactes, à jour et complètes", + "Maintenir et mettre à jour rapidement les informations de votre compte", + "Assurer la sécurité de votre compte et de votre mot de passe", + "Accepter tous les risques d'accès non autorisé à votre compte", + "Nous informer immédiatement de toute utilisation non autorisée de votre compte" + ], + "accountNote": "Nous nous réservons le droit de refuser le service, de résilier des comptes ou de supprimer du contenu à notre seule discrétion.", + "contentTitle": "3. Contenu et conduite", + "content": "Notre Service vous permet de publier, lier, stocker, partager et rendre disponible certaines informations, textes, graphiques, vidéos ou autres contenus. Vous êtes responsable du contenu que vous publiez et des conséquences de son partage. En publiant du contenu, vous déclarez disposer des droits nécessaires sur ce contenu.", + "contentList": [ + "Publier du contenu illégal, nuisible, menaçant, abusif ou discriminatoire", + "Usurper l'identité d'une personne ou d'une entité", + "Déclarer ou présenter faussement votre affiliation à une personne ou une entité", + "Publier des informations privées ou confidentielles d'autrui sans autorisation", + "Adopter un comportement qui restreint ou empêche l'utilisation ou la jouissance du Service par quiconque", + "Utiliser le Service à des fins illégales ou en violation de toute loi", + "Télécharger des virus ou d'autres codes malveillants", + "Tenter de contourner toute fonctionnalité de sécurité du Service" + ], + "bookingTitle": "4. Réservations et locations", + "bookingGuest": "En tant qu'invité, lorsque vous effectuez une réservation, vous acceptez de :", + "bookingGuestList": [ + "Payer tous les frais, taxes applicables et autres charges liées à votre réservation", + "Être responsable de votre comportement pendant votre séjour", + "Respecter les règles de la maison et les procédures de départ de l'hôte", + "Laisser la propriété dans le même état qu'à votre arrivée", + "Signaler rapidement tout dommage ou problème" + ], + "bookingHost": "En tant qu'hôte, lorsque vous listez votre propriété, vous acceptez de :", + "bookingHostList": [ + "Fournir des informations exactes et complètes sur votre espace", + "Maintenir votre propriété dans un état sûr et propre", + "Répondre rapidement aux demandes de réservation", + "Honorer les réservations confirmées", + "Respecter toutes les lois applicables, y compris les taxes, le zonage et la sécurité" + ], + "cancellationTitle": "5. Annulations et remboursements", + "cancellation": "Les annulations et remboursements sont gérés conformément à la politique d'annulation spécifique choisie par l'hôte pour son annonce. Cette politique est affichée sur chaque annonce avant la réservation. En effectuant une réservation, les invités reconnaissent et acceptent la politique d'annulation de l'hôte.", + "cancellationMore": "Pour plus d'informations, veuillez consulter notre <1>politique d'annulation.", + "feesTitle": "6. Frais et paiements", + "fees": "Smart Rent System facture des frais de service aux invités et aux hôtes pour l'utilisation de la plateforme. Ces frais sont calculés en pourcentage du sous-total de la réservation et sont clairement affichés avant le paiement. En utilisant notre Service, vous acceptez de payer tous les frais applicables. Tous les paiements sont traités en toute sécurité via notre plateforme.", + "disclaimerTitle": "7. Exclusions et limitations de responsabilité", + "disclaimer": "Le Service est fourni \"en l'état\" et \"selon la disponibilité\". Smart Rent System décline expressément toute garantie de quelque nature que ce soit, expresse ou implicite, y compris, mais sans s'y limiter, les garanties implicites de qualité marchande, d'adéquation à un usage particulier et d'absence de contrefaçon.", + "liability": "En aucun cas Smart Rent System ne pourra être tenu responsable de tout dommage indirect, accessoire, spécial, consécutif ou punitif, y compris, sans s'y limiter, la perte de profits, de données, d'utilisation, de clientèle ou d'autres pertes immatérielles, résultant de votre accès ou utilisation ou de l'impossibilité d'accéder ou d'utiliser le Service.", + "indemnificationTitle": "8. Indemnisation", + "indemnification": "Vous acceptez de défendre, d'indemniser et de dégager de toute responsabilité Smart Rent System, ses dirigeants, administrateurs, employés et agents, contre toute réclamation, responsabilité, dommage, perte et dépense, y compris les honoraires d'avocat raisonnables, résultant de ou liés à votre accès ou utilisation du Service, votre violation de ces Conditions ou votre violation des droits d'autrui.", + "modificationsTitle": "9. Modifications des conditions", + "modifications": "Nous nous réservons le droit de modifier ces Conditions à tout moment. Si nous apportons des modifications, nous en informerons en publiant les Conditions mises à jour sur notre site Web et en mettant à jour la date de \"Dernière mise à jour\". Votre utilisation continue du Service après cet avis constitue votre acceptation des nouvelles Conditions.", + "lawTitle": "10. Droit applicable", + "law": "Ces Conditions sont régies et interprétées conformément aux lois de [Juridiction], sans égard à ses dispositions en matière de conflit de lois. Vous acceptez de vous soumettre à la juridiction personnelle et exclusive des tribunaux situés dans [Juridiction].", + "contactTitle": "11. Coordonnées", + "contact": "Si vous avez des questions concernant ces Conditions, veuillez nous contacter à :", + "email": "E-mail : legal@smartrentsystem.com", + "address": "Adresse postale : 123 Rent Street, Ville, Pays", + "phone": "Téléphone : +1 (123) 456-7890", + "privacy": "Politique de confidentialité", + "privacyDesc": "Découvrez comment nous collectons, utilisons et protégeons vos informations.", + "readPrivacy": "Lire la politique de confidentialité", + "cookie": "Politique relative aux cookies", + "cookieDesc": "Découvrez comment nous utilisons les cookies et technologies similaires sur notre site Web.", + "readCookie": "Lire la politique relative aux cookies", + "help": "Centre d'aide", + "helpDesc": "Trouvez des réponses aux questions courantes sur nos conditions et politiques.", + "visitHelp": "Visiter le centre d'aide" +} diff --git a/frontend/src/locales/fr/footer.json b/frontend/src/locales/fr/footer.json new file mode 100644 index 0000000..fa7e913 --- /dev/null +++ b/frontend/src/locales/fr/footer.json @@ -0,0 +1,27 @@ +{ + "companyDescription": "Trouvez votre maison idéale loin de chez vous. SmartRent offre une plateforme sécurisée pour la location de propriétés avec des hôtes vérifiés et des annonces de qualité.", + "quickLinks": "Liens rapides", + "home": "Accueil", + "aboutUs": "À propos de nous", + "contact": "Contact", + "blog": "Blog", + "support": "Support", + "help": "Aide", + "safetyInformation": "Informations de sécurité", + "cancellationOptions": "Options d'annulation", + "reportConcern": "Signaler un problème", + "faq": "FAQ", + "contactUs": "Nous contacter", + "address": "123 rue de la Location, Ville, Pays", + "subscribeNewsletter": "S'abonner à la newsletter", + "yourEmail": "Votre email", + "subscribing": "Abonnement en cours...", + "subscribeSuccess": "Merci pour votre abonnement !", + "subscribeError": "Veuillez entrer une adresse email valide.", + "privacyPolicy": "Politique de confidentialité", + "termsOfService": "Conditions d'utilisation", + "cookiePolicy": "Politique de cookies", + "phone": "+33 1 23 45 67 89", + "email": "info@smartrentsystem.com", + "allRightsReserved": "Tous droits réservés." +} diff --git a/frontend/src/locales/fr/navbar.json b/frontend/src/locales/fr/navbar.json new file mode 100644 index 0000000..de316c4 --- /dev/null +++ b/frontend/src/locales/fr/navbar.json @@ -0,0 +1,19 @@ +{ + "search": "Chercher", + "login": "Se connecter", + "signup": "S'inscrire", + "logout": "Se déconnecter", + "profile": "Profil", + "help": "Aide", + "becomeHost": "Devenir hôte", + "messages": "Messages", + "trips": "Voyages", + "wishlist": "Liste de souhaits", + "account": "Compte", + "settings": "Paramètres", + "popularSuggestions": ["Paris", "Lyon", "Marseille", "Nice", "Bordeaux"], + "recentSearches": "Recherches récentes", + "clear": "Effacer", + "popularDestinations": "Destinations populaires", + "explore": "Explorer" +} diff --git a/frontend/src/locales/hi/About.json b/frontend/src/locales/hi/About.json new file mode 100644 index 0000000..2ef22b9 --- /dev/null +++ b/frontend/src/locales/hi/About.json @@ -0,0 +1,48 @@ + +{ + "aboutTitle": "स्मार्ट रेंट सिस्टम के बारे में", + "aboutSubtitle": "संपत्ति किराए को सभी के लिए सरल, सुरक्षित और आनंददायक बनाना।", + "missionTitle": "हमारा मिशन", + "missionText": "स्मार्ट रेंट सिस्टम की स्थापना 2020 में एक सरल मिशन के साथ की गई थी: संपत्ति किराए को सभी के लिए सुलभ, सुरक्षित और आनंददायक बनाना। हमने देखा कि पारंपरिक किराया प्रक्रिया अक्सर जटिल, समय लेने वाली और पारदर्शिता से रहित थी।", + "visionTitle": "हमारा विजन", + "visionText": "हमने एक ऐसा प्लेटफॉर्म बनाने का लक्ष्य रखा जो संपत्ति मालिकों को संभावित किराएदारों से सहजता से जोड़े, ऐसे टूल्स के साथ जो पूरी प्रक्रिया - लिस्टिंग से बुकिंग और ठहरने तक - को जितना संभव हो सके उतना आसान बनाते हैं। आज, स्मार्ट रेंट सिस्टम दुनिया भर में हजारों संपत्तियों की मेज़बानी करता है, यात्रियों को उनके लिए उपयुक्त अस्थायी घर खोजने में मदद करता है और संपत्ति मालिकों को न्यूनतम झंझट के साथ अपने किराए की क्षमता अधिकतम करने में सक्षम बनाता है।", + "ourValuesTitle": "हमारे मूल्य", + "trustSafetyTitle": "विश्वास और सुरक्षा", + "trustSafetyDesc": "हम मेज़बानों और मेहमानों दोनों के लिए एक सुरक्षित वातावरण बनाने में विश्वास रखते हैं, पारदर्शी नीतियों और सुरक्षित लेनदेन के साथ।", + "globalCommunityTitle": "वैश्विक समुदाय", + "globalCommunityDesc": "हम विविधता का जश्न मनाते हैं और विभिन्न पृष्ठभूमियों और संस्कृतियों के लोगों के बीच संबंध बनाने का प्रयास करते हैं।", + "innovationTitle": "नवाचार", + "innovationDesc": "हम अपने प्लेटफॉर्म और सेवाओं को लगातार बेहतर बनाते हैं ताकि सभी उपयोगकर्ताओं के लिए सर्वोत्तम अनुभव प्रदान किया जा सके।", + "teamTitle": "हमारी टीम से मिलें", + "teamText": "हमारी टीम यह सुनिश्चित करने के लिए समर्पित है कि प्रत्येक उपयोगकर्ता को उत्कृष्ट समर्थन मिले और स्मार्ट रेंट सिस्टम के साथ सकारात्मक अनुभव हो।", + "joinOurCommunity": "हमारे समुदाय से जुड़ें", + "joinOurCommunityDesc": "चाहे आप रहने के लिए जगह ढूंढ रहे हों या यात्रियों के साथ अपनी संपत्ति साझा करना चाहते हों, स्मार्ट रेंट सिस्टम आपकी मदद के लिए यहां है।", + "exploreProperties": "संपत्तियाँ देखें", + "becomeHost": "मेज़बान बनें", + "teamMembers": [ + { + "name": "जेन स्मिथ", + "role": "सीईओ और संस्थापक", + "image": "https://randomuser.me/api/portraits/women/32.jpg", + "bio": "जेन ने स्मार्ट रेंट सिस्टम की स्थापना एक ऐसे विजन के साथ की थी जिसमें लोग दुनिया भर में आवास खोजने और बुक करने के तरीके को बदलना था।" + }, + { + "name": "माइकल जॉनसन", + "role": "सीटीओ", + "image": "https://randomuser.me/api/portraits/men/42.jpg", + "bio": "माइकल हमारी तकनीकी टीम का नेतृत्व करते हैं, यह सुनिश्चित करते हुए कि हमारा प्लेटफॉर्म मेज़बानों और मेहमानों दोनों के लिए सुरक्षित, तेज़ और उपयोगकर्ता-अनुकूल है।" + }, + { + "name": "सारा चेन", + "role": "ऑपरेशंस प्रमुख", + "image": "https://randomuser.me/api/portraits/women/22.jpg", + "bio": "सारा हमारे दिन-प्रतिदिन के संचालन की देखरेख करती हैं, यह सुनिश्चित करती हैं कि मेज़बानों और मेहमानों दोनों को हमारे प्लेटफॉर्म पर निर्बाध अनुभव मिले।" + }, + { + "name": "जेम्स विल्सन", + "role": "ग्राहक अनुभव प्रमुख", + "image": "https://randomuser.me/api/portraits/men/32.jpg", + "bio": "जेम्स यह सुनिश्चित करने के लिए समर्पित हैं कि प्रत्येक उपयोगकर्ता को उत्कृष्ट समर्थन मिले और स्मार्ट रेंट सिस्टम के साथ सकारात्मक अनुभव हो।" + } + ] +} diff --git a/frontend/src/locales/hi/Account.json b/frontend/src/locales/hi/Account.json new file mode 100644 index 0000000..8ea5066 --- /dev/null +++ b/frontend/src/locales/hi/Account.json @@ -0,0 +1,35 @@ +{ + "accountSettings": "खाता सेटिंग्स", + "profile": "प्रोफ़ाइल", + "payment": "भुगतान विधियाँ", + "security": "सुरक्षा", + "notifications": "सूचनाएँ", + "privacy": "गोपनीयता", + "mustBeLoggedIn": "इस पृष्ठ को देखने के लिए आपको लॉगिन करना होगा", + "goToLogin": "लॉगिन पर जाएँ", + "logOut": "लॉग आउट", + "profileInformation": "प्रोफ़ाइल जानकारी", + "firstName": "पहला नाम", + "lastName": "अंतिम नाम", + "email": "ईमेल", + "phone": "फ़ोन", + "dateOfBirth": "जन्म तिथि", + "street": "सड़क", + "city": "शहर", + "state": "राज्य", + "zipCode": "पिन कोड", + "country": "देश", + "saveChanges": "परिवर्तन सहेजें", + "profileUpdated": "प्रोफ़ाइल सफलतापूर्वक अपडेट हुई!", + "profileUpdateFailed": "प्रोफ़ाइल अपडेट विफल: {{error}}", + "profileUpdateError": "प्रोफ़ाइल अपडेट करते समय त्रुटि हुई", + "removeProfileImageConfirm": "क्या आप वाकई अपनी प्रोफ़ाइल छवि हटाना चाहते हैं?", + "removeProfileImageError": "प्रोफ़ाइल छवि हटाने में त्रुटि: {{error}}", + "removeProfileImageGenericError": "प्रोफ़ाइल छवि हटाते समय त्रुटि हुई", + "uploadProfileImageError": "प्रोफ़ाइल छवि अपलोड विफल: {{error}}", + "uploadProfileImageGenericError": "प्रोफ़ाइल छवि अपलोड करते समय त्रुटि हुई", + "areYouSureRemovePayment": "क्या आप वाकई इस भुगतान विधि को हटाना चाहते हैं?", + "default": "डिफ़ॉल्ट", + "setDefault": "डिफ़ॉल्ट बनाएं", + "remove": "हटाएँ" +} diff --git a/frontend/src/locales/hi/BecomeHost.json b/frontend/src/locales/hi/BecomeHost.json new file mode 100644 index 0000000..0a7138c --- /dev/null +++ b/frontend/src/locales/hi/BecomeHost.json @@ -0,0 +1,71 @@ +{ + "becomeAHost": "मेज़बान बनें", + "step1Title": "संपत्ति प्रकार", + "step2Title": "स्थान", + "step3Title": "सुविधाएँ", + "step4Title": "फोटो", + "step5Title": "विवरण और मूल्य", + "propertyType": "संपत्ति प्रकार", + "propertyCategory": "संपत्ति श्रेणी", + "selectPropertyType": "संपत्ति प्रकार चुनें", + "selectPropertyCategory": "संपत्ति श्रेणी चुनें", + "address": "पता", + "city": "शहर", + "state": "राज्य", + "zipCode": "पिन कोड", + "country": "देश", + "amenities": "सुविधाएँ", + "selectAmenities": "सुविधाएँ चुनें", + "photos": "फोटो", + "uploadPhotos": "फोटो अपलोड करें", + "title": "शीर्षक", + "description": "विवरण", + "price": "प्रति रात मूल्य", + "guests": "मेहमान", + "bedrooms": "शयनकक्ष", + "beds": "बिस्तर", + "bathrooms": "बाथरूम", + "continue": "जारी रखें", + "back": "वापस", + "publishListing": "लिस्टिंग प्रकाशित करें", + "cancel": "रद्द करें", + "termsOfService": "सेवा की शर्तें", + "hostPolicies": "मेज़बान नीतियाँ", + "agreeToTerms": "मेज़बान बनकर, आप हमारी {termsOfService} और {hostPolicies} से सहमत होते हैं।", + "uploading": "अपलोड हो रहा है...", + "remove": "हटाएँ", + "selectCurrency": "मुद्रा चुनें", + "selectLanguage": "भाषा चुनें" +} + + "house": "मकान", + "apartment": "अपार्टमेंट", + "guesthouse": "गेस्टहाउस", + "hotel": "होटल", + "cabin": "केबिन", + "villa": "विला", + "beach": "समुद्र तट", + "mountain": "पहाड़", + "city": "शहर", + "countryside": "ग्रामीण इलाका", + "lake": "झील", + "desert": "रेगिस्तान", + "wifi": "वाई-फाई", + "kitchen": "रसोई", + "washer": "वॉशर", + "dryer": "ड्रायर", + "ac": "एयर कंडीशनिंग", + "heating": "हीटिंग", + "tv": "टीवी", + "parking": "नि:शुल्क पार्किंग", + "pool": "स्विमिंग पूल", + "hottub": "हॉट टब", + "gym": "जिम", + "pets": "पालतू जानवर अनुमति", + "usd": "अमेरिकी डॉलर", + "eur": "यूरो", + "gbp": "ब्रिटिश पाउंड", + "jpy": "जापानी येन", + "cad": "कनाडाई डॉलर", + "aud": "ऑस्ट्रेलियाई डॉलर", + "inr": "भारतीय रुपया" diff --git a/frontend/src/locales/hi/Blog.json b/frontend/src/locales/hi/Blog.json new file mode 100644 index 0000000..7bc2df8 --- /dev/null +++ b/frontend/src/locales/hi/Blog.json @@ -0,0 +1,18 @@ +{ + "blogTitle": "स्मार्ट रेंट ब्लॉग", + "blogSubtitle": "यात्रा सुझाव, गंतव्य मार्गदर्शिकाएँ, और आपकी यात्राओं को बेहतर बनाने के लिए जानकारियाँ", + "featuredArticles": "विशेष लेख", + "allPosts": "सभी पोस्ट", + "tips": "यात्रा सुझाव", + "destinations": "गंतव्य", + "hosting": "मेज़बानी सुझाव", + "news": "कंपनी समाचार", + "noPostsFound": "कोई पोस्ट नहीं मिली", + "noPostsAvailable": "इस श्रेणी में अभी कोई पोस्ट उपलब्ध नहीं है।", + "viewAllPosts": "सभी पोस्ट देखें", + "subscribeNewsletter": "हमारे न्यूज़लेटर की सदस्यता लें", + "newsletterDesc": "नवीनतम यात्रा सुझाव, गंतव्य मार्गदर्शिकाएँ और स्मार्ट रेंट समाचार सीधे अपने इनबॉक्स में प्राप्त करें।", + "yourEmail": "आपका ईमेल पता", + "subscribe": "सदस्यता लें", + "privacyConsent": "सदस्यता लेकर, आप हमारी गोपनीयता नीति से सहमत होते हैं और हमारी कंपनी से अपडेट प्राप्त करने की सहमति देते हैं।" +} diff --git a/frontend/src/locales/hi/Cancellation.json b/frontend/src/locales/hi/Cancellation.json new file mode 100644 index 0000000..65225bd --- /dev/null +++ b/frontend/src/locales/hi/Cancellation.json @@ -0,0 +1,62 @@ +{ + "cancellationTitle": "रद्दीकरण नीतियाँ", + "cancellationSubtitle": "बुकिंग के समय आपको मानसिक शांति देने के लिए पारदर्शी और लचीले विकल्प", + "understandingPolicies": "हमारी नीतियों को समझना", + "intro1": "Smart Rent System में, हम समझते हैं कि योजनाएँ बदल सकती हैं। हमारी रद्दीकरण नीतियाँ मेहमानों और मेज़बानों दोनों के लिए स्पष्टता और लचीलापन प्रदान करने के लिए डिज़ाइन की गई हैं।", + "intro2": "हमारे प्लेटफ़ॉर्म पर प्रत्येक संपत्ति के लिए नीचे दी गई रद्दीकरण नीतियों में से एक लागू होती है। किसी संपत्ति के लिए विशिष्ट नीति बुकिंग से पहले लिस्टिंग पृष्ठ पर स्पष्ट रूप से प्रदर्शित की जाती है।", + "forGuests": "मेहमानों के लिए", + "forHosts": "मेज़बानों के लिए", + "guestIntro": "संपत्ति बुक करते समय, उसकी रद्दीकरण नीति देखें ताकि आपको रद्द करने की स्थिति में अपने रिफंड विकल्पों की जानकारी हो सके। यहाँ प्रत्येक नीति का मेहमान के रूप में आपके लिए क्या अर्थ है:", + "hostIntro": "एक मेज़बान के रूप में, आप अपनी संपत्ति और व्यवसाय की आवश्यकताओं के अनुसार उपयुक्त रद्दीकरण नीति चुन सकते हैं। नीति चुनते समय निम्नलिखित बातों पर विचार करें:", + "flexible": "लचीला", + "moderate": "मध्यम", + "strict": "कठोर", + "nonrefundable": "गैर-वापसी योग्य", + "flexibleDesc": "चेक-इन से कम से कम 24 घंटे पहले रद्द करने पर पूर्ण रिफंड", + "moderateDesc": "चेक-इन से कम से कम 5 दिन पहले रद्द करने पर पूर्ण रिफंड", + "strictDesc": "चेक-इन से कम से कम 14 दिन पहले रद्द करने पर पूर्ण रिफंड", + "nonrefundableDesc": "रद्दीकरण के लिए कोई रिफंड नहीं, विशेष छूट दर", + "fullRefund": "पूर्ण रिफंड", + "partialRefund": "आंशिक रिफंड", + "noRefund": "कोई रिफंड नहीं", + "discountedRate": "छूट दर", + "travelInsurance": "यात्रा बीमा", + "flexibleFull": "चेक-इन से कम से कम 24 घंटे पहले रद्द करने पर (स्थानीय समयानुसार 2:00 बजे)", + "flexiblePartial": "यदि चेक-इन से कम समय बचा है, तो पहली रात गैर-वापसी योग्य होगी, लेकिन शेष रातों का 50% रिफंड मिलेगा", + "flexibleNone": "यदि अतिथि आता है और जल्दी चला जाता है, तो शेष रातों का रिफंड नहीं मिलेगा", + "moderateFull": "चेक-इन से कम से कम 5 दिन पहले रद्द करने पर (स्थानीय समयानुसार 2:00 बजे)", + "moderatePartial": "यदि चेक-इन से कम समय बचा है, तो पहली रात गैर-वापसी योग्य होगी, लेकिन शेष रातों का 50% रिफंड मिलेगा", + "moderateNone": "यदि अतिथि आता है और जल्दी चला जाता है, तो शेष रातों का रिफंड नहीं मिलेगा", + "strictFull": "चेक-इन से कम से कम 14 दिन पहले रद्द करने पर (स्थानीय समयानुसार 2:00 बजे)", + "strictPartial": "यदि चेक-इन से 7-14 दिन पहले रद्द किया गया, तो कुल लागत का 50% रिफंड मिलेगा", + "strictNone": "यदि चेक-इन से 7 दिन से कम समय बचा है या अतिथि नहीं आता है, तो कोई रिफंड नहीं मिलेगा", + "nonrefundableDiscount": "अतिथियों को संपत्ति की मानक दर से 10-15% छूट मिलती है", + "nonrefundableNone": "रद्दीकरण के लिए कोई रिफंड नहीं दिया जाता, चाहे वे कब भी हों", + "nonrefundableInsurance": "इस विकल्प को चुनते समय हम मेहमानों को यात्रा बीमा लेने की सलाह देते हैं", + "hostTipFlexible": "यह नीति उन मेहमानों को आकर्षित करने के लिए अच्छी है जो प्रतिबद्ध होने में हिचकिचाते हैं। यह अंतिम समय की बुकिंग और उच्च प्रतिस्पर्धा वाले स्थानों के लिए उपयुक्त है।", + "hostTipModerate": "यह संतुलित नीति मेहमानों के लिए लचीलापन और मेज़बानों के लिए सुरक्षा के बीच अच्छा समझौता प्रदान करती है। यह अधिकांश संपत्ति प्रकारों के लिए उपयुक्त है।", + "hostTipStrict": "यह नीति उच्च मांग वाले क्षेत्रों या पीक सीज़न में मेज़बानों के लिए अधिक सुरक्षा प्रदान करती है, जब रद्द की गई तिथियों को फिर से बुक करना मुश्किल हो सकता है।", + "hostTipNonrefundable": "यह विकल्प आपको भुगतान सुरक्षा सुनिश्चित करते हुए छूट दर प्रदान करने की अनुमति देता है। उच्च मांग वाली संपत्तियों या पीक सीज़न के लिए सर्वोत्तम।", + "extenuatingCircumstances": "विशेष परिस्थितियाँ नीति", + "extenuatingDesc1": "दुर्लभ मामलों में, हम संपत्ति की मानक रद्दीकरण नीति को ओवरराइड कर सकते हैं और आंशिक या पूर्ण रिफंड जारी कर सकते हैं। ये अपवाद अप्रत्याशित परिस्थितियों के लिए बनाए जाते हैं:", + "extenuatingList1": "रहने से पहले या दौरान होती हैं", + "extenuatingList2": "रहना असंभव या असुरक्षित बना देती हैं", + "extenuatingList3": "बुकिंग के समय अप्रत्याशित होती हैं", + "extenuatingDesc2": "उदाहरणों में प्राकृतिक आपदाएँ, सरकारी आपातकाल, गंभीर बीमारी या चोट, या ऐसी परिवहन समस्याएँ शामिल हैं जो गंतव्य तक पहुँचना असंभव बना देती हैं।", + "extenuatingDesc3": "विशेष परिस्थितियों के दावे के लिए दस्तावेज़ीकरण आवश्यक हो सकता है।", + "faqsTitle": "अक्सर पूछे जाने वाले प्रश्न", + "needHelp": "अधिक सहायता चाहिए?", + "needHelpDesc": "यदि आपके पास किसी विशिष्ट आरक्षण के बारे में प्रश्न हैं या रद्दीकरण में सहायता चाहिए, तो हमारी सहायता टीम आपकी मदद के लिए उपलब्ध है।", + "contactSupport": "संपर्क सहायता", + "visitHelp": "सहायता केंद्र देखें", + "faq1Q": "यदि मैं अपनी बुकिंग रद्द करता हूँ तो क्या होगा?", + "faq1A": "यदि आप अपनी बुकिंग रद्द करते हैं, तो आपकी धनवापसी संपत्ति की रद्दीकरण नीति पर निर्भर करेगी। कृपया अपने आरक्षण या लिस्टिंग पृष्ठ पर नीति विवरण देखें।", + "faq2Q": "मैं रद्दीकरण का अनुरोध कैसे करूं?", + "faq2A": "रद्दीकरण का अनुरोध करने के लिए, अपनी 'यात्राएँ' पृष्ठ पर जाएँ, बुकिंग चुनें, और 'रद्द करें' पर क्लिक करें। अनुरोध पूरा करने के लिए निर्देशों का पालन करें।", + "faq3Q": "मुझे अपनी धनवापसी कब मिलेगी?", + "faq3A": "रद्दीकरण के बाद आमतौर पर 5-10 कार्यदिवसों के भीतर धनवापसी संसाधित की जाती है, जो आपके भुगतान प्रदाता पर निर्भर करता है।", + "faq4Q": "क्या मैं रद्द करने के बजाय अपनी आरक्षण तिथियाँ बदल सकता हूँ?", + "faq4A": "हाँ, आप अपनी 'यात्राएँ' पृष्ठ से अपनी आरक्षण तिथियाँ बदलने का अनुरोध कर सकते हैं। स्वीकृति मेज़बान की उपलब्धता पर निर्भर करती है।", + "faq5Q": "अगर मुझे आपातकाल में रद्द करना पड़े तो क्या होगा?", + "faq5A": "यदि आपको आपातकाल या अप्रत्याशित परिस्थिति के कारण रद्द करना है, तो कृपया हमारी सहायता टीम से संपर्क करें। हम अतिरिक्त लचीलापन प्रदान कर सकते हैं।" +} diff --git a/frontend/src/locales/hi/Contact.json b/frontend/src/locales/hi/Contact.json new file mode 100644 index 0000000..ec6429b --- /dev/null +++ b/frontend/src/locales/hi/Contact.json @@ -0,0 +1,20 @@ +{ + "contactTitle": "संपर्क करें", + "contactSubtitle": "हम आपकी सहायता के लिए यहाँ हैं। कभी भी संपर्क करें।", + "phoneLabel": "फ़ोन", + "phoneValue": "+1 (800) 123-4567", + "officeHoursLabel": "कार्यालय समय", + "officeHoursValue": "सोम-शुक्र, सुबह 9 से शाम 6", + "emailContactLabel": "ईमेल", + "emailContactValue": "support@smartrent.com", + "successMessage": "आपका संदेश सफलतापूर्वक भेज दिया गया है!", + "addressLabel": "पता", + "addressValue": "123 स्मार्ट रेंट स्ट्रीट\nसैन फ्रांसिस्को, CA 94103", + "connectWithUs": "हमसे जुड़ें", + "formIntro": "नीचे दिए गए फॉर्म को भरें और हम जल्द ही आपसे संपर्क करेंगे।", + "nameLabel": "नाम", + "emailLabel": "ईमेल", + "subjectLabel": "विषय", + "messageLabel": "संदेश", + "submitButton": "संदेश भेजें" +} diff --git a/frontend/src/locales/hi/ErrorBoundary.json b/frontend/src/locales/hi/ErrorBoundary.json new file mode 100644 index 0000000..cb5f3bf --- /dev/null +++ b/frontend/src/locales/hi/ErrorBoundary.json @@ -0,0 +1,5 @@ +{ + "errorTitle": "कुछ गलत हो गया।", + "errorMessage": "एक अप्रत्याशित त्रुटि हुई है। कृपया पृष्ठ को रीफ्रेश करें या समस्या बनी रहने पर सहायता से संपर्क करें।", + "refresh": "रीफ्रेश करें" +} diff --git a/frontend/src/locales/hi/FAQ.json b/frontend/src/locales/hi/FAQ.json new file mode 100644 index 0000000..74221ab --- /dev/null +++ b/frontend/src/locales/hi/FAQ.json @@ -0,0 +1,79 @@ +{ + "faqTitle": "अक्सर पूछे जाने वाले प्रश्न", + "faqSubtitle": "Smart Rent System का उपयोग करने के बारे में सबसे सामान्य प्रश्नों के उत्तर देखें।", + "categoriesLabel": "श्रेणियाँ", + "categories": { + "general": "सामान्य प्रश्न", + "booking": "बुकिंग और आरक्षण", + "payment": "भुगतान और रिफंड", + "host": "मेज़बानी प्रश्न", + "safety": "सुरक्षा और संरक्षा", + "account": "खाता प्रबंधन" + }, + "needMoreHelp": "अधिक सहायता चाहिए?", + "needMoreHelpDesc": "यदि आपको वह नहीं मिल रहा है जो आप ढूंढ रहे हैं, तो हमारी सहायता टीम आपकी सहायता के लिए तैयार है।", + "contactSupport": "सहायता से संपर्क करें", + "helpCenter": "सहायता केंद्र", + "helpCenterDesc": "Smart Rent के लिए व्यापक सहायता गाइड, ट्यूटोरियल और समस्या निवारण टिप्स ब्राउज़ करें।", + "visitHelpCenter": "सहायता केंद्र देखें", + "safetyInfo": "सुरक्षा जानकारी", + "safetyInfoDesc": "हमारे सुरक्षा प्रोटोकॉल, मेहमानों और मेज़बानों के लिए दिशानिर्देश, और आपातकालीन संसाधनों के बारे में जानें।", + "viewSafetyGuidelines": "सुरक्षा दिशानिर्देश देखें", + "reportConcernTitle": "चिंता की रिपोर्ट करें", + "reportConcernDesc": "क्या आपको किसी लिस्टिंग या उपयोगकर्ता के बारे में सुरक्षा समस्या, नीति उल्लंघन या अन्य चिंता की रिपोर्ट करनी है?", + "submitReport": "रिपोर्ट सबमिट करें", + "general": { + "what-is-smart-rent": { + "question": "Smart Rent System क्या है?", + "answer": "Smart Rent System एक प्लेटफ़ॉर्म है जो यात्रियों को दुनिया भर में अनूठे आवासों से जोड़ता है। हमारा प्लेटफ़ॉर्म होस्ट्स को अपनी संपत्तियाँ सूचीबद्ध करने और मेहमानों को इन स्थानों को बुक करने की अनुमति देता है। हम सुरक्षित भुगतान प्रोसेसिंग, सत्यापित समीक्षाएँ, और ग्राहक सहायता प्रदान करते हैं ताकि सभी के लिए एक सहज अनुभव सुनिश्चित किया जा सके।" + }, + "how-to-start": { + "question": "Smart Rent के साथ कैसे शुरू करें?", + "answer": "शुरू करना आसान है! बस एक खाता बनाएं, अपनी प्रोफ़ाइल जानकारी भरें, और आप संपत्तियों की खोज या अपनी जगह सूचीबद्ध करना शुरू कर सकते हैं। स्थान, मूल्य, सुविधाएँ आदि के अनुसार लिस्टिंग ब्राउज़ करें और अपनी अगली यात्रा के लिए सही जगह चुनें।" + }, + "contact-support": { + "question": "मैं ग्राहक सहायता से कैसे संपर्क करूं?", + "answer": "आप हमारी ग्राहक सहायता टीम से कई चैनलों के माध्यम से संपर्क कर सकते हैं। हमारी वेबसाइट पर संपर्क पृष्ठ का उपयोग करें, हमें support@smartrentsystem.com पर ईमेल करें, या हमारे सहायता लाइन +1 (800) SMART-RENT पर कॉल करें। हमारी टीम 24/7 उपलब्ध है।" + }, + "app-available": { + "question": "क्या मोबाइल ऐप उपलब्ध है?", + "answer": "हाँ! Smart Rent System ऐप iOS और Android दोनों के लिए उपलब्ध है। इसे App Store या Google Play Store से डाउनलोड करें और अपनी बुकिंग्स, संदेश, और लिस्टिंग को आसानी से प्रबंधित करें।" + } + }, + "booking": { + "how-to-book": { + "question": "मैं संपत्ति कैसे बुक करूं?", + "answer": "संपत्ति बुक करने के लिए, अपनी पसंदीदा स्थान और तारीखों में आवास खोजें। जब आपको पसंद आए, 'Reserve' या 'Book Now' पर क्लिक करें और चेकआउट प्रक्रिया पूरी करें। कुछ संपत्तियाँ तत्काल बुकिंग की अनुमति देती हैं, जबकि अन्य के लिए होस्ट की स्वीकृति आवश्यक होती है।" + }, + "booking-confirmation": { + "question": "मुझे कैसे पता चलेगा कि मेरी बुकिंग पुष्टि हो गई है?", + "answer": "बुकिंग प्रक्रिया पूरी करने के बाद, आपको एक पुष्टि ईमेल मिलेगा जिसमें आपके आरक्षण का पूरा विवरण होगा। आप अपने खाते के 'Trips' सेक्शन में भी बुकिंग की स्थिति देख सकते हैं।" + }, + "cancel-booking": { + "question": "मैं बुकिंग कैसे रद्द करूं?", + "answer": "बुकिंग रद्द करने के लिए, अपने खाते के 'Trips' सेक्शन में जाएँ, उस बुकिंग को चुनें जिसे आप रद्द करना चाहते हैं, और 'Cancel' विकल्प पर क्लिक करें। रिफंड राशि संपत्ति की रद्दीकरण नीति पर निर्भर करेगी।" + }, + "modify-dates": { + "question": "क्या मैं अपनी आरक्षण की तारीखें बदल सकता हूँ?", + "answer": "हाँ, आप अपनी आरक्षण की तारीखें बदलने का अनुरोध कर सकते हैं। अपने 'Trips' पेज पर जाएँ, बुकिंग चुनें, और 'Modify Reservation' पर क्लिक करें। यह होस्ट की स्वीकृति और उपलब्धता पर निर्भर करता है। नई तारीखों के अनुसार मूल्य समायोजन हो सकता है।" + } + }, + "payment": { + "payment-methods": { + "question": "कौन-कौन से भुगतान विकल्प स्वीकार किए जाते हैं?", + "answer": "हम प्रमुख क्रेडिट और डेबिट कार्ड (Visa, MasterCard, American Express, Discover), PayPal, और कुछ क्षेत्रों में Apple Pay और Google Pay स्वीकार करते हैं। सभी भुगतान हमारे प्लेटफ़ॉर्म के माध्यम से सुरक्षित रूप से प्रोसेस किए जाते हैं।" + }, + "payment-timing": { + "question": "मुझे बुकिंग के लिए कब चार्ज किया जाता है?", + "answer": "अधिकांश बुकिंग्स के लिए, जब होस्ट आपकी आरक्षण स्वीकार करता है या Instant Book का उपयोग करते हैं तो आपको पूरा चार्ज किया जाता है। कुछ लंबी अवधि की बुकिंग्स या अग्रिम बुकिंग्स के लिए, आप किस्तों में भुगतान करने का विकल्प चुन सकते हैं।" + }, + "security-deposit": { + "question": "सुरक्षा जमा क्या है और यह कब वापस किया जाता है?", + "answer": "सुरक्षा जमा वह राशि है जो आपके प्रवास के दौरान संभावित क्षति को कवर करने के लिए रखी जाती है। जब तक होस्ट द्वारा दावा नहीं किया जाता, तब तक यह चार्ज नहीं होती। यदि कोई दावा नहीं किया जाता, तो चेक-आउट के 14 दिन बाद आपके भुगतान विधि पर होल स्वतः हट जाता है।" + }, + "refund-process": { + "question": "रिफंड प्रक्रिया में कितना समय लगता है?", + "answer": "रिफंड जारी होने के बाद, आमतौर पर 5-10 कार्यदिवस लगते हैं आपके मूल भुगतान विधि पर दिखने में। सटीक समय आपके भुगतान प्रदाता और वित्तीय संस्थान पर निर्भर करता है।" + } + } +} diff --git a/frontend/src/locales/hi/Help.json b/frontend/src/locales/hi/Help.json new file mode 100644 index 0000000..f718ccf --- /dev/null +++ b/frontend/src/locales/hi/Help.json @@ -0,0 +1,104 @@ +{ + "helpTitle": "सहायता केंद्र", + "helpSubtitle": "हम आपकी कैसे सहायता कर सकते हैं?", + "searchPlaceholder": "सहायता विषय खोजें...", + "contactSupport": "सहायता से संपर्क करें", + "noResults": "कोई सहायता लेख नहीं मिला।", + "backToHome": "होम पर वापस जाएं", + "howCanWeHelp": "हम आपकी कैसे सहायता कर सकते हैं?", + "findAnswers": "अपने प्रश्नों के उत्तर पाएं या हमारी सहायता टीम से संपर्क करें", + "searchForAnswers": "उत्तर खोजें...", + "helpGuidesTitle": "सहायता गाइड", + "helpGuidesDesc": "Smart Rent सुविधाओं के उपयोग के लिए विस्तृत गाइड", + "viewGuides": "गाइड देखें", + "safetyInfo": "सुरक्षा जानकारी", + "cancellationPolicies": "रद्दीकरण नीतियां", + "reportConcern": "चिंता की रिपोर्ट करें", + "contactSupportDesc": "हमारी ग्राहक सहायता टीम से संपर्क करें", + "contactUs": "संपर्क करें", + "communityForum": "सामुदायिक मंच", + "communityForumDesc": "अन्य उपयोगकर्ताओं से जुड़ें और अपने अनुभव साझा करें", + "joinDiscussion": "चर्चा में शामिल हों", + "generalFaqs": "सामान्य प्रश्न", + "whatIsSmartRent": "Smart Rent क्या है?", + "howToUseSmartRent": "मैं Smart Rent का उपयोग कैसे करूं?", + "howToContactService": "मैं ग्राहक सेवा से कैसे संपर्क करूं?", + "cantFind": "आप जो खोज रहे हैं वह नहीं मिला?", + "contactOurSupport": "हमारी सहायता टीम से संपर्क करें", + "emailSupportDesc": "हमारी ईमेल सहायता टीम 24/7 उपलब्ध है।", + "phoneSupportDesc": "त्वरित सहायता के लिए हमारी ग्राहक सेवा टीम को कॉल करें।", + "phoneSupportHours": "सोमवार-शुक्रवार, सुबह 9 से शाम 6 बजे तक उपलब्ध", + "liveChatDesc": "त्वरित सहायता के लिए हमारी टीम से रीयल-टाइम में चैट करें।", + "startChat": "चैट सत्र प्रारंभ करें", + "categoryGeneral": "सामान्य", + "categoryAccount": "खाता और प्रोफ़ाइल", + "categoryBooking": "बुकिंग और आरक्षण", + "categoryPayment": "भुगतान और रिफंड", + "categoryHosting": "होस्टिंग", + "categorySafety": "सुरक्षा और पहुंच", + "faqWhatIsSmartRentQuestion": "Smart Rent क्या है?", + "faqWhatIsSmartRentAnswer": "Smart Rent एक ऐसा प्लेटफ़ॉर्म है जो संपत्ति मालिकों को यात्रियों से जोड़ता है जो अद्वितीय और आरामदायक ठहरने की जगह ढूंढ रहे हैं। चाहे आप शहर में एक आरामदायक अपार्टमेंट या समुद्र तट के किनारे विला की तलाश कर रहे हों, Smart Rent आपकी आवश्यकताओं और बजट के अनुसार कई विकल्प प्रदान करता है।", + "faqHowToUseQuestion": "मैं Smart Rent का उपयोग कैसे करूं?", + "faqHowToUseAnswer": "Smart Rent का उपयोग करना आसान है। एक खाता बनाएं, अपनी मंजिल और तारीखों के अनुसार संपत्तियों की खोज करें, विकल्पों को ब्राउज़ करें, और जो सबसे अच्छा लगे उसे बुक करें। आप अपनी पसंदीदा संपत्तियों को सेव कर सकते हैं, होस्ट से सीधे संदेश भेज सकते हैं, और अपने प्रवास के बाद समीक्षा भी कर सकते हैं।", + "faqCustomerServiceQuestion": "मैं ग्राहक सेवा से कैसे संपर्क करूं?", + "faqCustomerServiceAnswer": "आप हमारी ग्राहक सेवा टीम से विभिन्न चैनलों के माध्यम से संपर्क कर सकते हैं, जैसे ईमेल support help@smartrent.com, हमारी वेबसाइट पर 24/7 लाइव चैट, या फोन +1-800-SMART-RENT पर। हम सभी पूछताछ का 24 घंटे के भीतर उत्तर देने का प्रयास करते हैं।", + "faqCreateAccountQuestion": "मैं खाता कैसे बनाऊं?", + "faqCreateAccountAnswer": "खाता बनाने के लिए, हमारी वेबसाइट या ऐप के ऊपर दाईं ओर 'साइन अप' बटन पर क्लिक करें। आप अपना ईमेल पता, Google या Facebook के साथ साइन अप कर सकते हैं। अपनी जानकारी भरें, हमारी सेवा शर्तों से सहमत हों, और आप तैयार हैं!", + "faqDeleteAccountQuestion": "क्या मैं अपना खाता हटा सकता हूँ?", + "faqDeleteAccountAnswer": "हाँ, आप कभी भी अपना खाता हटा सकते हैं। अपने खाता सेटिंग्स में जाएं, पेज के नीचे स्क्रॉल करें, और 'खाता हटाएं' पर क्लिक करें। कृपया ध्यान दें कि यह क्रिया अपरिवर्तनीय है और आपके सभी डेटा को स्थायी रूप से हटा देगी।", + "faqCancelBookingQuestion": "मैं बुकिंग कैसे रद्द करूं?", + "faqCancelBookingAnswer": "बुकिंग रद्द करने के लिए, अपनी ट्रिप्स पेज पर जाएं, उस आरक्षण को ढूंढें जिसे आप रद्द करना चाहते हैं, और 'रिजर्वेशन रद्द करें' पर क्लिक करें। रिफंड राशि संपत्ति की रद्दीकरण नीति और चेक-इन तिथि के करीब होने पर निर्भर करती है। बुकिंग से पहले हमेशा रद्दीकरण नीति देखें।", + "faqModifyBookingQuestion": "क्या मैं अपनी बुकिंग की तारीखें बदल सकता हूँ?", + "faqModifyBookingAnswer": "हाँ, आप अपनी बुकिंग की तारीखें बदलने का अनुरोध कर सकते हैं। अपनी ट्रिप्स पेज पर जाएं, उस आरक्षण को ढूंढें जिसे आप बदलना चाहते हैं, और 'रिजर्वेशन बदलें' पर क्लिक करें। ध्यान दें कि परिवर्तन होस्ट की स्वीकृति के अधीन हैं और नई तारीखों के आधार पर मूल्य समायोजन हो सकते हैं।", + "faqPaymentMethodsQuestion": "आप कौन-कौन से भुगतान तरीके स्वीकार करते हैं?", + "faqPaymentMethodsAnswer": "हम विभिन्न भुगतान तरीकों को स्वीकार करते हैं, जिनमें प्रमुख क्रेडिट कार्ड (Visa, MasterCard, American Express), डेबिट कार्ड, PayPal, और कुछ क्षेत्रों में Affirm या Klarna जैसी किस्त सेवाएं शामिल हैं।", + "faqRefundPolicyQuestion": "आपकी रिफंड नीति क्या है?", + "faqRefundPolicyAnswer": "हमारी रिफंड नीति प्रत्येक संपत्ति की रद्दीकरण नीति पर निर्भर करती है, जिसे होस्ट द्वारा चुना जाता है। ये आमतौर पर तीन श्रेणियों में आती हैं: लचीला, मध्यम, और सख्त। विशिष्ट रिफंड राशि बुकिंग की पुष्टि से पहले और आपकी ट्रिप डिटेल्स में स्पष्ट रूप से दिखाई जाती है।", + "faqBecomeHostQuestion": "मैं होस्ट कैसे बनूं?", + "faqBecomeHostAnswer": "होस्ट बनने के लिए, शीर्ष नेविगेशन मेनू में 'होस्ट बनें' पर क्लिक करें। आपको अपनी संपत्ति के लिए फ़ोटो, विवरण और मूल्य निर्धारण विवरण के साथ एक लिस्टिंग बनानी होगी। हमारी चरण-दर-चरण गाइड आपकी लिस्टिंग सेटअप करने और मेहमानों का स्वागत शुरू करने में मदद करेगी।", + "faqHostFeesQuestion": "होस्ट को कौन-कौन से शुल्क देने होते हैं?", + "faqHostFeesAnswer": "होस्ट को आमतौर पर बुकिंग सबटोटल का 3% सेवा शुल्क देना होता है। यह शुल्क भुगतान प्रक्रिया और होस्ट को प्रदान की जाने वाली सेवाओं की लागत को कवर करता है, जैसे 24/7 ग्राहक सहायता और आपकी संपत्ति का विपणन।", + "faqCovidMeasuresQuestion": "COVID-19 के लिए कौन-कौन से सुरक्षा उपाय हैं?", + "faqCovidMeasuresAnswer": "हम होस्ट को स्वास्थ्य विशेषज्ञों के साथ विकसित किए गए उन्नत सफाई प्रोटोकॉल का पालन करने के लिए प्रोत्साहित करते हैं। कई संपत्तियों ने अतिरिक्त सुरक्षा उपाय लागू किए हैं, जो लिस्टिंग पेज पर दिखाए जाते हैं। हम COVID-19 परिस्थितियों से संबंधित लचीले रद्दीकरण विकल्प भी प्रदान करते हैं।", + "faqAccessibilityQuestion": "मैं सुलभ संपत्तियां कैसे ढूंढूं?", + "faqAccessibilityAnswer": "आप अपनी विशिष्ट आवश्यकताओं के अनुसार संपत्तियां खोजने के लिए हमारी एक्सेसिबिलिटी फ़िल्टर का उपयोग कर सकते हैं। होस्ट विभिन्न एक्सेसिबिलिटी सुविधाओं को सूचीबद्ध कर सकते हैं, जैसे स्टेप-फ्री एक्सेस, चौड़े दरवाजे, सुलभ पार्किंग आदि।", + "helpGuides": "सहायता गाइड", + "helpGuidesDescription": "Smart Rent सुविधाओं और सेवाओं के उपयोग के लिए विस्तृत गाइड।", + "safetyInformation": "सुरक्षा जानकारी", + "cancellationPolicies": "रद्दीकरण नीतियां", + "reportAConcern": "चिंता की रिपोर्ट करें", + "contactSupport": "संपर्क सहायता", + "contactSupportDescription": "हमारी सहायता टीम आपकी किसी भी समस्या या प्रश्न में मदद के लिए यहाँ है।", + "yourName": "आपका नाम", + "enterYourName": "अपना नाम दर्ज करें", + "emailAddress": "ईमेल पता", + "enterYourEmail": "अपना ईमेल दर्ज करें", + "subject": "विषय", + "selectASubject": "विषय चुनें", + "bookingIssue": "बुकिंग समस्या", + "paymentProblem": "भुगतान समस्या", + "accountSettings": "खाता सेटिंग्स", + "hostingQuestion": "होस्टिंग प्रश्न", + "other": "अन्य", + "message": "संदेश", + "describeYourIssueOrQuestion": "अपनी समस्या या प्रश्न का वर्णन करें", + "submitRequest": "अनुरोध सबमिट करें", + "communityForum": "सामुदायिक मंच", + "forumDescription": "अन्य उपयोगकर्ताओं से जुड़ें, अनुभव साझा करें, और समुदाय से सलाह प्राप्त करें।", + "comingSoon": "जल्द आ रहा है!", + "forumComingSoonDescription": "हमारा सामुदायिक मंच विकासाधीन है। अन्य Smart Rent उपयोगकर्ताओं के साथ चर्चा में शामिल होने के लिए जल्द ही वापस आएं!", + "howCanWeHelpYou": "हम आपकी कैसे सहायता कर सकते हैं?", + "findAnswersOrContactSupport": "अपने प्रश्नों के उत्तर पाएं या हमारी सहायता टीम से संपर्क करें", + "frequentlyAskedQuestions": "अक्सर पूछे जाने वाले प्रश्न", + "cantFindWhatYouAreLookingFor": "आप जो खोज रहे हैं वह नहीं मिला?", + "contactOurSupportTeam": "हमारी सहायता टीम से संपर्क करें", + "emailSupport": "ईमेल सहायता", + "emailSupportDescription": "हमारी ईमेल सहायता टीम 24/7 उपलब्ध है।", + "phoneSupport": "फोन सहायता", + "phoneSupportDescription": "त्वरित सहायता के लिए हमारी ग्राहक सेवा टीम को कॉल करें।", + "availableMondayToFriday": "सोमवार-शुक्रवार, सुबह 9 से शाम 6 बजे तक उपलब्ध", + "liveChat": "लाइव चैट", + "liveChatDescription": "त्वरित सहायता के लिए हमारी टीम से रीयल-टाइम में चैट करें।", + "startAChatSession": "चैट सत्र प्रारंभ करें", + "available247": "24/7 उपलब्ध" +} diff --git a/frontend/src/locales/hi/Home.json b/frontend/src/locales/hi/Home.json new file mode 100644 index 0000000..d55a22e --- /dev/null +++ b/frontend/src/locales/hi/Home.json @@ -0,0 +1,54 @@ +{ + "city-tours": "सिटी टूर", + "city-toursDesc": "स्थानीय गाइड के साथ खोजें", + "outdoor-adventures": "आउटडोर एडवेंचर्स", + "outdoor-adventuresDesc": "स्थानीय गाइड के साथ खोजें", + "local-cuisine": "स्थानीय व्यंजन", + "local-cuisineDesc": "स्थानीय गाइड के साथ खोजें", + "heroTitle": "ऐसी जगहें खोजें जो <1>घर जैसी महसूस हों", + "heroDescription": "दुनिया भर में अद्वितीय घर, अपार्टमेंट और अनुभव खोजें — आराम, शैली और अविस्मरणीय यादों के लिए चुने गए।", + "exploreStays": "रहने की जगहें देखें", + "becomeHost": "मेज़बान बनें", + + "inspirationTitle": "आपकी अगली यात्रा के लिए प्रेरणा", + "inspirationSubtitle": "परफेक्ट वेकेशन रेंटल्स के साथ शीर्ष गंतव्य खोजें", + + "newYork": "न्यूयॉर्क", + "newYorkProperties": "120 संपत्तियाँ", + "losAngeles": "लॉस एंजिल्स", + "losAngelesProperties": "94 संपत्तियाँ", + "miami": "मियामी", + "miamiProperties": "85 संपत्तियाँ", + "chicago": "शिकागो", + "chicagoProperties": "73 संपत्तियाँ", + + "stayAnywhereTitle": "कहीं भी रहें", + "stayAnywhereSubtitle": "हर शैली और बजट के लिए अनूठे आवास", + "apartments": "अपार्टमेंट्स", + "apartmentsDesc": "शहरी आराम", + "houses": "मकान", + "housesDesc": "पूरा घर", + "cabins": "केबिन", + "cabinsDesc": "ग्रामीण विश्राम", + "villas": "विला", + "villasDesc": "लक्ज़री प्रवास", + + "discoverExperiencesTitle": "अनुभव खोजें", + "discoverExperiencesSubtitle": "स्थानीय विशेषज्ञों द्वारा आयोजित गतिविधियाँ खोजें", + "cityTours": "सिटी टूर", + "cityToursDesc": "स्थानीय गाइड के साथ खोजें", + "outdoorAdventures": "आउटडोर एडवेंचर्स", + "outdoorAdventuresDesc": "स्थानीय गाइड के साथ खोजें", + "localCuisine": "स्थानीय व्यंजन", + "localCuisineDesc": "स्थानीय गाइड के साथ खोजें", + + "becomeAHostTitle": "मेज़बान बनें", + "becomeAHostDesc": "अपनी जगह साझा करें, अतिरिक्त आय अर्जित करें, और दुनिया भर के मेहमानों से जुड़ें।", + "learnMore": "और जानें", + "city-tours": "सिटी टूर", + "city-toursDesc": "स्थानीय गाइड के साथ खोजें", + "outdoor-adventures": "आउटडोर एडवेंचर्स", + "outdoor-adventuresDesc": "स्थानीय गाइड के साथ खोजें", + "local-cuisine": "स्थानीय व्यंजन", + "local-cuisineDesc": "स्थानीय गाइड के साथ खोजें" +} diff --git a/frontend/src/locales/hi/Login.json b/frontend/src/locales/hi/Login.json new file mode 100644 index 0000000..3373385 --- /dev/null +++ b/frontend/src/locales/hi/Login.json @@ -0,0 +1,11 @@ +{ + "loginTitle": "अपने खाते में लॉग इन करें", + "createAccount": "या एक नया खाता बनाएं", + "email": "ईमेल पता", + "password": "पासवर्ड", + "rememberMe": "मुझे याद रखें", + "forgotPassword": "क्या आप पासवर्ड भूल गए?", + "login": "लॉग इन करें", + "orContinueWith": "या जारी रखें", + "signInWithGoogle": "Google से साइन इन करें" +} diff --git a/frontend/src/locales/hi/NotFound.json b/frontend/src/locales/hi/NotFound.json new file mode 100644 index 0000000..5e8325d --- /dev/null +++ b/frontend/src/locales/hi/NotFound.json @@ -0,0 +1,5 @@ +{ + "notFoundTitle": "पृष्ठ नहीं मिला", + "notFoundMessage": "माफ़ कीजिए, आप जिस पृष्ठ को ढूंढ रहे हैं वह मौजूद नहीं है।", + "goHome": "मुख्य पृष्ठ पर जाएँ" +} diff --git a/frontend/src/locales/hi/Register.json b/frontend/src/locales/hi/Register.json new file mode 100644 index 0000000..adc7c7e --- /dev/null +++ b/frontend/src/locales/hi/Register.json @@ -0,0 +1,17 @@ +{ + "signInToExistingLink": "अपने मौजूदा खाते में साइन इन करें", + "signUpWithGoogle": "Google से साइन अप करें", + "signUpWithFacebook": "Facebook से साइन अप करें", + "registerTitle": "अपना खाता बनाएं", + "signInToExisting": "या अपने मौजूदा खाते में साइन इन करें", + "firstName": "पहला नाम", + "lastName": "अंतिम नाम", + "username": "यूज़रनेम (वैकल्पिक)", + "usernameHint": "यदि खाली छोड़ा गया तो आपके ईमेल का भाग उपयोग किया जाएगा", + "email": "ईमेल पता", + "password": "पासवर्ड", + "confirmPassword": "पासवर्ड की पुष्टि करें", + "agreeTerms": "मैं सेवा की शर्तों और गोपनीयता नीति से सहमत हूँ", + "register": "खाता बनाएं", + "orContinueWith": "या जारी रखें" +} diff --git a/frontend/src/locales/hi/ReportConcern.json b/frontend/src/locales/hi/ReportConcern.json new file mode 100644 index 0000000..43f3110 --- /dev/null +++ b/frontend/src/locales/hi/ReportConcern.json @@ -0,0 +1,51 @@ +{ + "title": "चिंता की रिपोर्ट करें", + "subtitle": "आपकी सुरक्षा और संतुष्टि हमारी प्राथमिकता है। किसी भी समस्या या चिंता के बारे में हमें बताएं।", + "thankYouTitle": "आपकी रिपोर्ट के लिए धन्यवाद", + "thankYouMsg1": "हमें आपकी चिंता प्राप्त हो गई है और हम शीघ्र ही इसकी समीक्षा करेंगे। यदि हमें अतिरिक्त जानकारी की आवश्यकता होगी तो हमारी टीम आपसे ईमेल के माध्यम से संपर्क करेगी।", + "thankYouMsg2": "संदर्भ संख्या:", + "returnHome": "होम पर लौटें", + "visitHelp": "हेल्प सेंटर देखें", + "howToTitle": "चिंता की रिपोर्ट कैसे करें", + "howToDesc": "हम सभी रिपोर्टों को गंभीरता से लेते हैं और प्रत्येक की पूरी तरह से जांच करेंगे। कृपया अपनी चिंता को कुशलतापूर्वक संबोधित करने में हमारी सहायता के लिए यथासंभव विवरण प्रदान करें।", + "emergency": "आपात स्थिति के लिए:", + "emergencyDesc": "यदि आप आपात स्थिति का सामना कर रहे हैं, तो कृपया तुरंत अपने स्थानीय आपातकालीन नंबर पर कॉल करें।", + "submitTitle": "अपनी रिपोर्ट सबमिट करें", + "concernTypeLabel": "चिंता का प्रकार *", + "concernTypePlaceholder": "चिंता का प्रकार चुनें", + "concernTypes": [ + "सुरक्षा संबंधी चिंता", + "संभावित धोखाधड़ी", + "धोखाधड़ी या भ्रामक लिस्टिंग", + "भेदभाव", + "संपत्ति की क्षति", + "सुलभता समस्या", + "खाता सुरक्षा", + "अन्य चिंता" + ], + "listingIdLabel": "लिस्टिंग/आरक्षण आईडी (यदि लागू हो)", + "listingIdPlaceholder": "जैसे, LIST12345 या RES67890", + "listingIdHelp": "यह हमें आपकी चिंता से संबंधित विशिष्ट लिस्टिंग या आरक्षण की पहचान करने में मदद करता है।", + "descriptionLabel": "चिंता का विवरण *", + "descriptionPlaceholder": "कृपया अपनी चिंता के बारे में यथासंभव विवरण प्रदान करें...", + "attachmentsLabel": "संलग्नक (वैकल्पिक)", + "attachmentsUpload": "फाइलें अपलोड करें", + "attachmentsOr": "या ड्रैग और ड्रॉप करें", + "attachmentsHelp": "PNG, JPG, PDF अधिकतम 10MB", + "contactTitle": "आपकी संपर्क जानकारी", + "nameLabel": "नाम *", + "emailLabel": "ईमेल *", + "phoneLabel": "फोन नंबर (वैकल्पिक)", + "privacyNotice": "मैं समझता/समझती हूँ कि मेरी जानकारी को <1>गोपनीयता नीति में वर्णित अनुसार संसाधित किया जाएगा", + "submitBtn": "रिपोर्ट सबमिट करें", + "safetyInfoTitle": "सुरक्षा जानकारी", + "safetyInfoDesc": "अतिथियों और मेज़बानों के लिए हमारी सुरक्षा दिशानिर्देश और प्रोटोकॉल जानें।", + "helpCenterTitle": "हेल्प सेंटर", + "helpCenterDesc": "हमारे अक्सर पूछे जाने वाले प्रश्न और सहायता गाइड ब्राउज़ करें।", + "contactSupportTitle": "सपोर्ट से संपर्क करें", + "contactSupportDesc": "हमारी ग्राहक सहायता टीम से संपर्क करें।", + "emergencyLineTitle": "आपातकालीन लाइन", + "emergencyLineDesc": "जरूरी मामलों के लिए हमारी आपातकालीन सहायता लाइन पर कॉल करें।", + "additionalResources": "अतिरिक्त संसाधन" + ,"attachmentsUploadNoFile": "कोई फ़ाइल चुनी नहीं गई" +} \ No newline at end of file diff --git a/frontend/src/locales/hi/Safety.json b/frontend/src/locales/hi/Safety.json new file mode 100644 index 0000000..8940c42 --- /dev/null +++ b/frontend/src/locales/hi/Safety.json @@ -0,0 +1,48 @@ +{ + "headerTitle": "आपकी सुरक्षा महत्वपूर्ण है", + "headerSubtitle": "Smart Rent System हमारे मेज़बानों और मेहमानों के लिए सुरक्षित वातावरण बनाने के लिए प्रतिबद्ध है", + "commitmentTitle": "सुरक्षा के प्रति हमारी प्रतिबद्धता", + "commitmentDesc1": "Smart Rent System में, हम अपने समुदाय की सुरक्षा और भलाई को प्राथमिकता देते हैं। हमने व्यापक सुरक्षा उपाय, सत्यापन प्रक्रियाएँ, और समर्थन प्रणालियाँ लागू की हैं ताकि मेज़बान और मेहमान दोनों हमारे प्लेटफ़ॉर्म का आत्मविश्वास और शांति के साथ उपयोग कर सकें।", + "commitmentDesc2": "यह पृष्ठ हमारे सुरक्षा अभ्यास, आपातकालीन संसाधनों, और दिशानिर्देशों के बारे में जानकारी प्रदान करता है ताकि आप हमारी सेवाओं का उपयोग करते समय सुरक्षित रह सकें।", + "featuresTitle": "मुख्य सुरक्षा विशेषताएँ", + "featureVerifiedTitle": "सत्यापित प्रोफाइल", + "featureVerifiedDesc": "सभी उपयोगकर्ताओं की पहचान सत्यापित की जाती है, इससे यह सुनिश्चित होता है कि हमारे समुदाय के सदस्य वही हैं जो वे कहते हैं।", + "featurePropertyTitle": "संपत्ति मानक", + "featurePropertyDesc": "हमारे प्लेटफ़ॉर्म पर सूचीबद्ध संपत्तियों को बुनियादी सुरक्षा आवश्यकताओं को पूरा करना चाहिए, जिसमें धुएं और कार्बन मोनोऑक्साइड डिटेक्टर शामिल हैं।", + "featureSupportTitle": "24/7 समर्थन", + "featureSupportDesc": "हमारी ग्राहक सहायता टीम किसी भी सुरक्षा चिंता या आपातकालीन स्थिति में चौबीसों घंटे उपलब्ध है।", + "tipsTitle": "सुरक्षा सुझाव", + "tipsGuestsTitle": "मेहमानों के लिए", + "tipsGuests1": "संपत्ति विवरण, सुरक्षा विशेषताओं और घर के नियमों को ध्यान से पढ़ें।", + "tipsGuests2": "पिछले मेहमानों की समीक्षाएँ पढ़ें ताकि संपत्ति और मेज़बान के बारे में जानकारी मिल सके।", + "tipsGuests3": "अपनी सुरक्षा के लिए Smart Rent System प्लेटफ़ॉर्म के भीतर ही संवाद करें।", + "tipsGuests4": "आगमन पर आपातकालीन निकास और सुरक्षा उपकरणों से परिचित हों।", + "tipsGuests5": "अपनी यात्रा की जानकारी किसी विश्वसनीय मित्र या परिवार के सदस्य के साथ साझा करें।", + "tipsHostsTitle": "मेज़बानों के लिए", + "tipsHosts1": "धुएं और कार्बन मोनोऑक्साइड डिटेक्टर, और अग्निशामक स्थापित और बनाए रखें।", + "tipsHosts2": "स्पष्ट चेक-इन निर्देश और आपातकालीन संपर्क जानकारी प्रदान करें।", + "tipsHosts3": "सभी दरवाजों और खिड़कियों, विशेषकर बेडरूम में, उचित ताले सुनिश्चित करें।", + "tipsHosts4": "स्थानीय चिकित्सा सुविधाओं और आपातकालीन नंबरों के साथ एक आपातकालीन गाइड बनाएं और प्रदर्शित करें।", + "tipsHosts5": "बुकिंग स्वीकार करने से पहले मेहमानों की प्रोफाइल और संवाद की समीक्षा करें।", + "covidTitle": "COVID-19 सुरक्षा उपाय", + "covidDesc": "हालांकि कई क्षेत्रों में COVID-19 प्रतिबंधों में ढील दी गई है, हम सुरक्षा प्रथाओं को प्रोत्साहित करना जारी रखते हैं जो हमारे समुदाय की रक्षा करती हैं:", + "covidCleaningTitle": "सुधारित सफाई प्रोटोकॉल", + "covidCleaningDesc": "हम मेज़बानों को मेहमानों के बीच उन्नत सफाई प्रक्रियाओं का पालन करने की सलाह देते हैं, जिसमें उच्च-स्पर्श सतहों को कीटाणुरहित करना और संभव हो तो हैंड सैनिटाइज़र प्रदान करना शामिल है।", + "covidFlexibleTitle": "लचीले बुकिंग विकल्प", + "covidFlexibleDesc": "कई संपत्तियाँ स्वास्थ्य संबंधी चिंताओं के कारण यात्रा योजनाओं में अप्रत्याशित बदलावों को समायोजित करने के लिए लचीली रद्दीकरण नीतियाँ प्रदान करती हैं।", + "emergencyTitle": "आपातकालीन संसाधन", + "emergencyImmediateTitle": "तत्काल आपातकाल", + "emergencyImmediateDesc": "किसी भी जीवन-धमकी आपातकाल के लिए, स्थानीय आपातकालीन सेवाओं से तुरंत संपर्क करें:", + "emergencyNumber": "112", + "emergencyNumberNote": "(या आपके स्थान के लिए उपयुक्त आपातकालीन नंबर)", + "emergencySupportTitle": "Smart Rent System त्वरित समर्थन", + "emergencySupportDesc": "ऐसी त्वरित स्थितियों के लिए जो जीवन-धमकी नहीं हैं लेकिन तत्काल सहायता की आवश्यकता है:", + "emergencySupportLineLabel": "त्वरित समर्थन लाइन", + "emergencySupportLine": "+91 98765 43210", + "emergencySupportEmailLabel": "सुरक्षा ईमेल", + "emergencySupportEmail": "safety@smartrent.com", + "reportTitle": "सुरक्षा संबंधी चिंताओं की रिपोर्टिंग", + "reportDesc": "यदि आपको कोई सुरक्षा समस्या या बुकिंग या सूची के बारे में चिंता है, तो हम आपको तुरंत रिपोर्ट करने के लिए प्रोत्साहित करते हैं। आपकी रिपोर्ट हमें सभी के लिए एक सुरक्षित प्लेटफ़ॉर्म बनाए रखने में मदद करती है।", + "reportContactSupport": "संपर्क समर्थन", + "reportVisitHelpCenter": "सहायता केंद्र देखें" +} diff --git a/frontend/src/locales/hi/Terms.json b/frontend/src/locales/hi/Terms.json new file mode 100644 index 0000000..ba0fde3 --- /dev/null +++ b/frontend/src/locales/hi/Terms.json @@ -0,0 +1,75 @@ +{ + "termsTitle": "सेवा की शर्तें", + "termsSubtitle": "Smart Rent System के उपयोग के लिए नियम और दिशानिर्देश", + "lastUpdated": "अंतिम अपडेट: 15 नवंबर 2023", + "welcome": "Smart Rent System में आपका स्वागत है। ये सेवा की शर्तें आपकी वेबसाइट, ऐप्स और सेवाओं तक पहुँच और उपयोग को नियंत्रित करती हैं। हमारी सेवा का उपयोग करके, आप इन शर्तों से बंधे होने के लिए सहमत होते हैं।", + "acceptanceTitle": "1. शर्तों की स्वीकृति", + "acceptance": "सेवा के लिए पंजीकरण करके और/या किसी भी तरीके से सेवा का उपयोग करके, आप इन शर्तों और Smart Rent System द्वारा प्रकाशित अन्य सभी नियमों, नीतियों और प्रक्रियाओं से सहमत होते हैं। ये शर्तें सेवा के सभी उपयोगकर्ताओं पर लागू होती हैं, जिनमें होस्ट, अतिथि और सामान्य आगंतुक शामिल हैं।", + "accountTitle": "2. खाता पंजीकरण", + "account": "सेवा की कुछ सुविधाओं का उपयोग करने के लिए, आपको एक खाता पंजीकृत करना होगा। जब आप पंजीकरण करते हैं, तो आप सहमत होते हैं:", + "accountList": [ + "सटीक, वर्तमान और पूर्ण जानकारी प्रदान करें", + "अपने खाते की जानकारी बनाए रखें और तुरंत अपडेट करें", + "अपने खाते और पासवर्ड की सुरक्षा बनाए रखें", + "अपने खाते तक अनधिकृत पहुँच के सभी जोखिम स्वीकार करें", + "अपने खाते के किसी भी अनधिकृत उपयोग की तुरंत सूचना दें" + ], + "accountNote": "हम अपनी पूरी विवेकाधिकार में सेवा देने से मना करने, खाते समाप्त करने या सामग्री हटाने का अधिकार सुरक्षित रखते हैं।", + "contentTitle": "3. सामग्री और आचरण", + "content": "हमारी सेवा आपको कुछ जानकारी, पाठ, ग्राफिक्स, वीडियो या अन्य सामग्री पोस्ट, लिंक, स्टोर, साझा और उपलब्ध कराने की अनुमति देती है। आप जो भी सामग्री पोस्ट करते हैं, उसके लिए आप जिम्मेदार हैं। सामग्री पोस्ट करके, आप दर्शाते हैं कि आपके पास उस सामग्री के लिए आवश्यक अधिकार हैं।", + "contentList": [ + "अवैध, हानिकारक, धमकीपूर्ण, अपमानजनक या भेदभावपूर्ण सामग्री पोस्ट न करें", + "किसी व्यक्ति या संस्था का प्रतिरूपण न करें", + "किसी व्यक्ति या संस्था के साथ अपने संबंध को झूठा न बताएं", + "अन्य लोगों की निजी या गोपनीय जानकारी बिना अनुमति के पोस्ट न करें", + "ऐसा कोई आचरण न करें जो किसी के सेवा के उपयोग या आनंद को प्रतिबंधित या रोकता हो", + "सेवा का उपयोग किसी भी अवैध उद्देश्य के लिए या किसी भी कानून के उल्लंघन में न करें", + "वायरस या अन्य दुर्भावनापूर्ण कोड अपलोड न करें", + "सेवा की किसी भी सुरक्षा सुविधा को दरकिनार करने का प्रयास न करें" + ], + "bookingTitle": "4. बुकिंग और आरक्षण", + "bookingGuest": "अतिथि के रूप में, जब आप बुकिंग करते हैं, तो आप सहमत होते हैं:", + "bookingGuestList": [ + "सभी शुल्क, लागू करों और अन्य शुल्कों का भुगतान करें", + "अपने प्रवास के दौरान अपने आचरण के लिए जिम्मेदार रहें", + "मेज़बान के हाउस रूल्स और चेकआउट प्रक्रियाओं का पालन करें", + "संपत्ति को उसी स्थिति में छोड़ें जैसी वह आपके आगमन पर थी", + "किसी भी क्षति या समस्या की तुरंत रिपोर्ट करें" + ], + "bookingHost": "मेज़बान के रूप में, जब आप अपनी संपत्ति सूचीबद्ध करते हैं, तो आप सहमत होते हैं:", + "bookingHostList": [ + "अपने स्थान के बारे में सटीक और पूर्ण जानकारी प्रदान करें", + "अपनी संपत्ति को सुरक्षित और स्वच्छ स्थिति में बनाए रखें", + "बुकिंग अनुरोधों का समय पर उत्तर दें", + "पुष्टि की गई बुकिंग का सम्मान करें", + "सभी लागू कानूनों का पालन करें, जिसमें कर, ज़ोनिंग और सुरक्षा नियम शामिल हैं" + ], + "cancellationTitle": "5. रद्दीकरण और रिफंड", + "cancellation": "रद्दीकरण और रिफंड उस विशिष्ट रद्दीकरण नीति के अनुसार संभाले जाते हैं जिसे मेज़बान ने अपनी सूची के लिए चुना है। यह नीति बुकिंग से पहले प्रत्येक सूची में प्रदर्शित होती है। बुकिंग पूरी करके, अतिथि मेज़बान की रद्दीकरण नीति को स्वीकार करते हैं।", + "cancellationMore": "अधिक जानकारी के लिए, कृपया हमारी <1>रद्दीकरण नीति देखें।", + "feesTitle": "6. शुल्क और भुगतान", + "fees": "Smart Rent System प्लेटफ़ॉर्म के उपयोग के लिए अतिथि और मेज़बान दोनों से सेवा शुल्क लेता है। ये शुल्क बुकिंग उप-योग का प्रतिशत होते हैं और चेकआउट से पहले स्पष्ट रूप से प्रदर्शित होते हैं। हमारी सेवा का उपयोग करके, आप सभी लागू शुल्कों का भुगतान करने के लिए सहमत होते हैं। सभी भुगतान हमारे प्लेटफ़ॉर्म के माध्यम से सुरक्षित रूप से संसाधित किए जाते हैं।", + "disclaimerTitle": "7. अस्वीकरण और दायित्व की सीमाएँ", + "disclaimer": "सेवा 'जैसा है' और 'जैसा उपलब्ध है' के आधार पर प्रदान की जाती है। Smart Rent System सभी प्रकार की वारंटी को स्पष्ट रूप से अस्वीकार करता है, चाहे वह व्यक्त हो या निहित, जिसमें व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और गैर-उल्लंघन की निहित वारंटी शामिल है।", + "liability": "किसी भी स्थिति में Smart Rent System किसी भी अप्रत्यक्ष, आकस्मिक, विशेष, परिणामी या दंडात्मक क्षति के लिए उत्तरदायी नहीं होगा, जिसमें लाभ, डेटा, उपयोग, सद्भावना या अन्य अमूर्त हानियों की हानि शामिल है, जो आपकी सेवा तक पहुँच या उपयोग या सेवा का उपयोग करने में असमर्थता के कारण उत्पन्न होती है।", + "indemnificationTitle": "8. प्रतिपूर्ति", + "indemnification": "आप सहमत होते हैं कि आप Smart Rent System, उसके अधिकारियों, निदेशकों, कर्मचारियों और एजेंटों को किसी भी दावे, देनदारियों, क्षति, हानि और खर्चों (उचित वकील शुल्क सहित) से बचाएंगे, जो आपकी सेवा तक पहुँच या उपयोग, इन शर्तों का उल्लंघन, या किसी अन्य के अधिकारों का उल्लंघन करने से उत्पन्न होते हैं।", + "modificationsTitle": "9. शर्तों में संशोधन", + "modifications": "हम किसी भी समय इन शर्तों को संशोधित करने का अधिकार सुरक्षित रखते हैं। यदि हम परिवर्तन करते हैं, तो हम अपनी वेबसाइट पर अद्यतन शर्तें पोस्ट करके और 'अंतिम अपडेट' तिथि को अपडेट करके सूचना देंगे। सेवा का निरंतर उपयोग आपके द्वारा नई शर्तों की स्वीकृति का गठन करता है।", + "lawTitle": "10. लागू कानून", + "law": "ये शर्तें [क्षेत्राधिकार] के कानूनों द्वारा शासित और व्याख्यायित की जाएंगी, इसके संघर्ष के कानून प्रावधानों की परवाह किए बिना। आप [क्षेत्राधिकार] के भीतर स्थित अदालतों के व्यक्तिगत और विशेष अधिकार क्षेत्र को स्वीकार करते हैं।", + "contactTitle": "11. संपर्क जानकारी", + "contact": "यदि आपके पास इन शर्तों के बारे में कोई प्रश्न हैं, तो कृपया हमसे संपर्क करें:", + "email": "ईमेल: legal@smartrentsystem.com", + "address": "डाक पता: 123 Rent Street, City, Country", + "phone": "फोन: +1 (123) 456-7890", + "privacy": "गोपनीयता नीति", + "privacyDesc": "जानें कि हम आपकी जानकारी कैसे एकत्र, उपयोग और सुरक्षित रखते हैं।", + "readPrivacy": "गोपनीयता नीति पढ़ें", + "cookie": "कुकी नीति", + "cookieDesc": "जानें कि हम अपनी वेबसाइट पर कुकीज़ और समान तकनीकों का उपयोग कैसे करते हैं।", + "readCookie": "कुकी नीति पढ़ें", + "help": "सहायता केंद्र", + "helpDesc": "हमारी शर्तों और नीतियों के बारे में सामान्य प्रश्नों के उत्तर प्राप्त करें।", + "visitHelp": "सहायता केंद्र देखें" +} diff --git a/frontend/src/locales/hi/footer.json b/frontend/src/locales/hi/footer.json new file mode 100644 index 0000000..6a489f7 --- /dev/null +++ b/frontend/src/locales/hi/footer.json @@ -0,0 +1,27 @@ +{ + "companyDescription": "अपने घर से दूर अपने लिए एक आदर्श घर खोजें। SmartRent एक सुरक्षित प्लेटफ़ॉर्म प्रदान करता है जिसमें सत्यापित होस्ट और गुणवत्ता वाली लिस्टिंग होती हैं।", + "quickLinks": "त्वरित लिंक", + "home": "मुखपृष्ठ", + "aboutUs": "हमारे बारे में", + "contact": "संपर्क करें", + "blog": "ब्लॉग", + "support": "सहायता", + "help": "मदद", + "safetyInformation": "सुरक्षा जानकारी", + "cancellationOptions": "रद्दीकरण विकल्प", + "reportConcern": "चिंता रिपोर्ट करें", + "faq": "सामान्य प्रश्न", + "contactUs": "संपर्क करें", + "address": "123 रेंट स्ट्रीट, शहर, देश", + "subscribeNewsletter": "न्यूज़लेटर के लिए सदस्यता लें", + "yourEmail": "आपका ईमेल", + "subscribing": "सदस्यता ली जा रही है...", + "subscribeSuccess": "सदस्यता लेने के लिए धन्यवाद!", + "subscribeError": "कृपया एक मान्य ईमेल पता दर्ज करें।", + "privacyPolicy": "गोपनीयता नीति", + "termsOfService": "सेवा की शर्तें", + "cookiePolicy": "कुकी नीति", + "phone": "+91 12345 67890", + "email": "info@smartrentsystem.com", + "allRightsReserved": "सर्वाधिकार सुरक्षित।" +} diff --git a/frontend/src/locales/hi/navbar.json b/frontend/src/locales/hi/navbar.json new file mode 100644 index 0000000..ef8a742 --- /dev/null +++ b/frontend/src/locales/hi/navbar.json @@ -0,0 +1,19 @@ +{ + "search": "खोजें", + "login": "लॉग इन करें", + "signup": "साइन अप करें", + "logout": "लॉग आउट", + "profile": "प्रोफ़ाइल", + "help": "मदद", + "becomeHost": "मेज़बान बनें", + "messages": "संदेश", + "trips": "यात्राएँ", + "wishlist": "इच्छा सूची", + "account": "खाता", + "settings": "सेटिंग्स", + "popularSuggestions": ["नई दिल्ली", "मुंबई", "बैंगलोर", "चेन्नई", "कोलकाता"], + "recentSearches": "हाल की खोजें", + "clear": "साफ़ करें", + "popularDestinations": "लोकप्रिय गंतव्य", + "explore": "खोजें" +} diff --git a/frontend/src/locales/ja/About.json b/frontend/src/locales/ja/About.json new file mode 100644 index 0000000..3612d8c --- /dev/null +++ b/frontend/src/locales/ja/About.json @@ -0,0 +1,47 @@ +{ + "aboutTitle": "Smart Rent Systemについて", + "aboutSubtitle": "すべての人にとって賃貸をシンプルで安全、快適に。", + "missionTitle": "私たちのミッション", + "missionText": "Smart Rent Systemは2020年に設立され、すべての人にとって賃貸を利用しやすく、安全で快適にするというシンプルなミッションを掲げています。従来の賃貸プロセスは複雑で時間がかかり、透明性に欠けていることが多いと感じました。", + "visionTitle": "私たちのビジョン", + "visionText": "私たちは、物件オーナーと借り手をシームレスにつなぐプラットフォームを構築し、リスティングから予約、滞在までのすべてのプロセスをできる限りスムーズにするツールを提供することを目指しました。現在、Smart Rent Systemは世界中で数千の物件をホストし、旅行者が理想的な一時的な住まいを見つけるのを助け、オーナーが最小限の手間で賃貸収益を最大化できるようにしています。", + "ourValuesTitle": "私たちの価値観", + "trustSafetyTitle": "信頼と安全", + "trustSafetyDesc": "私たちは、ホストとゲストの両方にとって安全な環境を作ること、透明なポリシーと安全な取引を信条としています。", + "globalCommunityTitle": "グローバルコミュニティ", + "globalCommunityDesc": "私たちは多様性を称え、さまざまな背景や文化を持つ人々のつながりを創出します。", + "innovationTitle": "イノベーション", + "innovationDesc": "私たちはすべてのユーザーに最高の体験を提供するため、プラットフォームとサービスを継続的に改善しています。", + "teamTitle": "私たちのチーム紹介", + "teamText": "私たちのチームは、すべてのユーザーが素晴らしいサポートを受け、Smart Rent Systemで前向きな体験ができるよう尽力しています。", + "joinOurCommunity": "コミュニティに参加する", + "joinOurCommunityDesc": "滞在先をお探しの方も、物件を旅行者と共有したい方も、Smart Rent Systemがサポートします。", + "exploreProperties": "物件を探す", + "becomeHost": "ホストになる", + "teamMembers": [ + { + "name": "ジェーン・スミス", + "role": "CEO & 創設者", + "image": "https://randomuser.me/api/portraits/women/32.jpg", + "bio": "ジェーンは、世界中の人々が宿泊施設を見つけて予約する方法を変革するというビジョンでSmart Rent Systemを設立しました。" + }, + { + "name": "マイケル・ジョンソン", + "role": "CTO", + "image": "https://randomuser.me/api/portraits/men/42.jpg", + "bio": "マイケルは技術チームを率い、ホストとゲストの両方にとって安全で高速、使いやすいプラットフォームを実現しています。" + }, + { + "name": "サラ・チェン", + "role": "オペレーション責任者", + "image": "https://randomuser.me/api/portraits/women/22.jpg", + "bio": "サラは日々の運営を監督し、ホストとゲストの両方が当社のプラットフォームでスムーズな体験を得られるようにしています。" + }, + { + "name": "ジェームズ・ウィルソン", + "role": "カスタマーエクスペリエンス責任者", + "image": "https://randomuser.me/api/portraits/men/32.jpg", + "bio": "ジェームズは、すべてのユーザーが素晴らしいサポートを受け、Smart Rent Systemで前向きな体験ができるよう尽力しています。" + } + ] +} diff --git a/frontend/src/locales/ja/Account.json b/frontend/src/locales/ja/Account.json new file mode 100644 index 0000000..66f8bbe --- /dev/null +++ b/frontend/src/locales/ja/Account.json @@ -0,0 +1,35 @@ +{ + "accountSettings": "アカウント設定", + "profile": "プロフィール", + "payment": "支払い方法", + "security": "セキュリティ", + "notifications": "通知", + "privacy": "プライバシー", + "mustBeLoggedIn": "このページを見るにはログインが必要です", + "goToLogin": "ログインへ", + "logOut": "ログアウト", + "profileInformation": "プロフィール情報", + "firstName": "名", + "lastName": "姓", + "email": "メールアドレス", + "phone": "電話番号", + "dateOfBirth": "生年月日", + "street": "通り", + "city": "市区町村", + "state": "都道府県", + "zipCode": "郵便番号", + "country": "国", + "saveChanges": "変更を保存", + "profileUpdated": "プロフィールが正常に更新されました!", + "profileUpdateFailed": "プロフィールの更新に失敗しました: {{error}}", + "profileUpdateError": "プロフィール更新中にエラーが発生しました", + "removeProfileImageConfirm": "本当にプロフィール画像を削除しますか?", + "removeProfileImageError": "プロフィール画像の削除エラー: {{error}}", + "removeProfileImageGenericError": "プロフィール画像の削除中にエラーが発生しました", + "uploadProfileImageError": "プロフィール画像のアップロードに失敗しました: {{error}}", + "uploadProfileImageGenericError": "プロフィール画像のアップロード中にエラーが発生しました", + "areYouSureRemovePayment": "本当にこの支払い方法を削除しますか?", + "default": "デフォルト", + "setDefault": "デフォルトに設定", + "remove": "削除" +} diff --git a/frontend/src/locales/ja/BecomeHost.json b/frontend/src/locales/ja/BecomeHost.json new file mode 100644 index 0000000..a1d6721 --- /dev/null +++ b/frontend/src/locales/ja/BecomeHost.json @@ -0,0 +1,71 @@ +{ + "becomeAHost": "ホストになる", + "step1Title": "物件タイプ", + "step2Title": "場所", + "step3Title": "アメニティ", + "step4Title": "写真", + "step5Title": "詳細と価格", + "propertyType": "物件タイプ", + "propertyCategory": "物件カテゴリ", + "selectPropertyType": "物件タイプを選択", + "selectPropertyCategory": "物件カテゴリを選択", + "address": "住所", + "city": "市区町村", + "state": "都道府県", + "zipCode": "郵便番号", + "country": "国", + "amenities": "アメニティ", + "selectAmenities": "アメニティを選択", + "photos": "写真", + "uploadPhotos": "写真をアップロード", + "title": "タイトル", + "description": "説明", + "price": "1泊あたりの価格", + "guests": "ゲスト", + "bedrooms": "ベッドルーム", + "beds": "ベッド", + "bathrooms": "バスルーム", + "continue": "続行", + "back": "戻る", + "publishListing": "リスティングを公開", + "cancel": "キャンセル", + "termsOfService": "利用規約", + "hostPolicies": "ホストポリシー", + "agreeToTerms": "ホストになることで、{termsOfService}と{hostPolicies}に同意したことになります。", + "uploading": "アップロード中...", + "remove": "削除", + "selectCurrency": "通貨を選択", + "selectLanguage": "言語を選択" +} + + "house": "一軒家", + "apartment": "アパートメント", + "guesthouse": "ゲストハウス", + "hotel": "ホテル", + "cabin": "キャビン", + "villa": "ヴィラ", + "beach": "ビーチ", + "mountain": "山", + "city": "都市", + "countryside": "田舎", + "lake": "湖", + "desert": "砂漠", + "wifi": "Wi-Fi", + "kitchen": "キッチン", + "washer": "洗濯機", + "dryer": "乾燥機", + "ac": "エアコン", + "heating": "暖房", + "tv": "テレビ", + "parking": "無料駐車場", + "pool": "プール", + "hottub": "ホットタブ", + "gym": "ジム", + "pets": "ペット可", + "usd": "米ドル", + "eur": "ユーロ", + "gbp": "英ポンド", + "jpy": "日本円", + "cad": "カナダドル", + "aud": "オーストラリアドル", + "inr": "インドルピー" diff --git a/frontend/src/locales/ja/Blog.json b/frontend/src/locales/ja/Blog.json new file mode 100644 index 0000000..193bfbc --- /dev/null +++ b/frontend/src/locales/ja/Blog.json @@ -0,0 +1,18 @@ +{ + "blogTitle": "スマートレントブログ", + "blogSubtitle": "旅行のヒント、目的地ガイド、旅を最大限に楽しむためのインサイト", + "featuredArticles": "注目の記事", + "allPosts": "すべての記事", + "tips": "旅行のヒント", + "destinations": "目的地", + "hosting": "ホストのヒント", + "news": "会社のニュース", + "noPostsFound": "記事が見つかりません", + "noPostsAvailable": "このカテゴリにはまだ記事がありません。", + "viewAllPosts": "すべての記事を見る", + "subscribeNewsletter": "ニュースレターを購読する", + "newsletterDesc": "最新の旅行のヒント、目的地ガイド、スマートレントのニュースを受信箱にお届けします。", + "yourEmail": "あなたのメールアドレス", + "subscribe": "購読する", + "privacyConsent": "購読することで、プライバシーポリシーに同意し、当社からの最新情報を受け取ることに同意したものとみなされます。" +} diff --git a/frontend/src/locales/ja/Cancellation.json b/frontend/src/locales/ja/Cancellation.json new file mode 100644 index 0000000..4af03dd --- /dev/null +++ b/frontend/src/locales/ja/Cancellation.json @@ -0,0 +1,52 @@ +{ + "cancellationTitle": "キャンセルポリシー", + "cancellationSubtitle": "予約時に安心を提供する透明で柔軟なオプション", + "understandingPolicies": "ポリシーの理解", + "intro1": "Smart Rent System では、計画が変更されることがあることを理解しています。当社のキャンセルポリシーは、ゲストとホストの両方に明確さと柔軟性を提供するよう設計されています。", + "intro2": "当社のプラットフォーム上の各物件には、以下に示すキャンセルポリシーのいずれかが適用されます。物件ごとの具体的なポリシーは、予約前にリスティングページに明確に表示されます。", + "forGuests": "ゲスト向け", + "forHosts": "ホスト向け", + "guestIntro": "物件を予約する際は、キャンセルポリシーを確認して、キャンセル時の返金オプションを把握してください。各ポリシーがゲストとしてあなたにとって何を意味するかは次のとおりです:", + "hostIntro": "ホストとして、物件やビジネスのニーズに最適なキャンセルポリシーを選択できます。ポリシー選択時は次の点を考慮してください:", + "flexible": "柔軟", + "moderate": "中程度", + "strict": "厳格", + "nonrefundable": "返金不可", + "flexibleDesc": "チェックインの24時間以上前にキャンセルした場合は全額返金", + "moderateDesc": "チェックインの5日以上前にキャンセルした場合は全額返金", + "strictDesc": "チェックインの14日以上前にキャンセルした場合は全額返金", + "nonrefundableDesc": "キャンセル時の返金なしの特別割引料金", + "fullRefund": "全額返金", + "partialRefund": "一部返金", + "noRefund": "返金なし", + "discountedRate": "割引料金", + "travelInsurance": "旅行保険", + "flexibleFull": "チェックインの24時間以上前にキャンセルした場合(現地時間午後2時まで)", + "flexiblePartial": "チェックインの24時間未満前にキャンセルした場合、初日の宿泊料金は返金不可ですが、残りの宿泊料金の50%が返金されます", + "flexibleNone": "ゲストが到着して早く出発した場合、未使用の宿泊料金は返金されません", + "moderateFull": "チェックインの5日以上前にキャンセルした場合(現地時間午後2時まで)", + "moderatePartial": "チェックインの5日未満前にキャンセルした場合、初日の宿泊料金は返金不可ですが、残りの宿泊料金の50%が返金されます", + "moderateNone": "ゲストが到着して早く出発した場合、未使用の宿泊料金は返金されません", + "strictFull": "チェックインの14日以上前にキャンセルした場合(現地時間午後2時まで)", + "strictPartial": "チェックインの7~14日前にキャンセルした場合、合計料金の50%が返金されます", + "strictNone": "チェックインの7日未満前またはゲストがチェックインしなかった場合は返金されません", + "nonrefundableDiscount": "ゲストは物件の標準料金から10~15%の割引を受けられます", + "nonrefundableNone": "キャンセルの場合、時期に関係なく返金はありません", + "nonrefundableInsurance": "このオプションを選択する場合は旅行保険の加入を強くお勧めします", + "hostTipFlexible": "このポリシーは、予約に慎重なゲストを惹きつけるのに適しています。直前予約や競争の激しいエリアに最適です。", + "hostTipModerate": "このバランスの取れたポリシーは、ゲストの柔軟性とホストの安心の間で良い妥協点を提供します。ほとんどの物件タイプに適しています。", + "hostTipStrict": "このポリシーは、需要の高いエリアやピークシーズンでキャンセル日程の再予約が難しい場合にホストにより多くの安心を提供します。", + "hostTipNonrefundable": "このオプションでは、割引料金を提供しつつ支払いの安全性を確保できます。需要の高い物件やピークシーズンに最適です。", + "extenuatingCircumstances": "特別な事情ポリシー", + "extenuatingDesc1": "まれに、物件の標準キャンセルポリシーを上書きして部分的または全額返金を行う場合があります。これらの例外は、次のような予期しない事情に対して適用されます:", + "extenuatingList1": "滞在前または滞在中に発生する", + "extenuatingList2": "滞在の完了が不可能または危険になる", + "extenuatingList3": "予約時に予見できない", + "extenuatingDesc2": "例:自然災害、政府による緊急事態、重病や怪我、目的地への到達が不可能になる交通障害など。", + "extenuatingDesc3": "特別な事情の申請には書類の提出が必要な場合があります。", + "faqsTitle": "よくある質問", + "needHelp": "さらにサポートが必要ですか?", + "needHelpDesc": "特定の予約に関するご質問やキャンセルのサポートが必要な場合は、サポートチームまでご連絡ください。", + "contactSupport": "サポートに連絡する", + "visitHelp": "ヘルプセンターを訪問" +} diff --git a/frontend/src/locales/ja/Contact.json b/frontend/src/locales/ja/Contact.json new file mode 100644 index 0000000..e97bbb1 --- /dev/null +++ b/frontend/src/locales/ja/Contact.json @@ -0,0 +1,20 @@ +{ + "contactTitle": "お問い合わせ", + "contactSubtitle": "ご質問があればいつでもご連絡ください。", + "phoneLabel": "電話", + "phoneValue": "+1 (800) 123-4567", + "officeHoursLabel": "営業時間", + "officeHoursValue": "月〜金, 9時〜18時", + "emailContactLabel": "メール", + "emailContactValue": "support@smartrent.com", + "successMessage": "メッセージが正常に送信されました!", + "addressLabel": "住所", + "addressValue": "123 Smart Rent Street\nサンフランシスコ, CA 94103", + "connectWithUs": "お問い合わせ", + "formIntro": "下記のフォームにご記入いただければ、すぐにご連絡いたします。", + "nameLabel": "名前", + "emailLabel": "メール", + "subjectLabel": "件名", + "messageLabel": "メッセージ", + "submitButton": "送信" +} diff --git a/frontend/src/locales/ja/ErrorBoundary.json b/frontend/src/locales/ja/ErrorBoundary.json new file mode 100644 index 0000000..9fcb27b --- /dev/null +++ b/frontend/src/locales/ja/ErrorBoundary.json @@ -0,0 +1,5 @@ +{ + "errorTitle": "問題が発生しました。", + "errorMessage": "予期しないエラーが発生しました。ページを更新するか、問題が解決しない場合はサポートに連絡してください。", + "refresh": "更新" +} diff --git a/frontend/src/locales/ja/FAQ.json b/frontend/src/locales/ja/FAQ.json new file mode 100644 index 0000000..c56c88e --- /dev/null +++ b/frontend/src/locales/ja/FAQ.json @@ -0,0 +1,28 @@ +{ + "faqTitle": "よくある質問", + "faqSubtitle": "Smart Rent Systemのよくある質問とその回答をご覧ください", + "categories": { + "general": "一般的な質問", + "booking": "予約・宿泊", + "payment": "支払い・返金", + "host": "ホスト向けの質問", + "safety": "安全・セキュリティ", + "account": "アカウント管理" + }, + "needMoreHelp": "さらにサポートが必要ですか?", + "needMoreHelpDesc": "お探しの内容が見つからない場合は、サポートチームまでご連絡ください。", + "contactSupport": "サポートに連絡する", + "categoriesLabel": "カテゴリ", + "helpCenter": "ヘルプセンター", + "helpCenterDesc": "Smart Rentの使い方ガイド、チュートリアル、トラブルシューティングを参照できます。", + "visitHelpCenter": "ヘルプセンターを訪問", + "safetyInfo": "安全情報", + "safetyInfoDesc": "当社の安全対策、ゲスト・ホスト向けガイドライン、緊急時のリソースについてご案内します。", + "viewSafetyGuidelines": "安全ガイドラインを見る", + "general": [], + "booking": [], + "payment": [], + "host": [], + "safety": [], + "account": [] +} diff --git a/frontend/src/locales/ja/Help.json b/frontend/src/locales/ja/Help.json new file mode 100644 index 0000000..af350a0 --- /dev/null +++ b/frontend/src/locales/ja/Help.json @@ -0,0 +1,84 @@ +{ + "helpTitle": "ヘルプセンター", + "helpSubtitle": "どのようにお手伝いできますか?", + "searchPlaceholder": "ヘルプトピックを検索...", + "contactSupport": "サポートに連絡", + "faq": "よくある質問", + "noResults": "ヘルプ記事が見つかりません。", + "backToHome": "ホームに戻る", + "howCanWeHelp": "どのようにお手伝いできますか?", + "findAnswers": "ご質問への回答を見つけるか、サポートチームにお問い合わせください", + "searchForAnswers": "回答を検索...", + "helpGuidesTitle": "ヘルプガイド", + "helpGuidesDesc": "Smart Rent 機能の使い方に関する詳細ガイド", + "viewGuides": "ガイドを見る", + "safetyInfo": "安全情報", + "cancellationPolicies": "キャンセルポリシー", + "reportConcern": "懸念を報告する", + "contactSupportDesc": "カスタマーサポートチームにご連絡ください", + "contactUs": "お問い合わせ", + "communityForum": "コミュニティフォーラム", + "communityForumDesc": "他のユーザーとつながり、体験を共有しましょう", + "joinDiscussion": "ディスカッションに参加", + "faq": "よくある質問", + "categoryGeneral": "一般", + "categoryAccount": "アカウントとプロフィール", + "categoryBooking": "予約", + "categoryPayment": "支払いと返金", + "categoryHosting": "ホスティング", + "categorySafety": "安全とアクセシビリティ", + "generalFaqs": "一般的なFAQ", + "whatIsSmartRent": "Smart Rentとは何ですか?", + "howToUseSmartRent": "Smart Rentの使い方は?", + "howToContactService": "カスタマーサービスへの連絡方法は?", + "cantFind": "お探しのものが見つかりませんか?", + "contactOurSupport": "サポートチームに連絡する", + "emailSupport": "メールサポート", + "emailSupportDesc": "メールサポートチームは24時間365日対応しています。", + "phoneSupport": "電話サポート", + "phoneSupportDesc": "営業時間内にカスタマーサービスチームにお電話ください。", + "phoneSupportHours": "月曜~金曜、9時~18時(EST)対応", + "liveChat": "ライブチャット", + "liveChatDesc": "リアルタイムでサポートチームとチャットして迅速に対応します。", + "startChat": "チャットを開始", + "available247": "24時間365日対応", + "helpGuides": "ヘルプガイド", + "helpGuidesDescription": "Smart Rent機能とサービスの詳細ガイド。", + "safetyInformation": "安全情報", + "cancellationPolicies": "キャンセルポリシー", + "reportAConcern": "懸念を報告する", + "contactSupport": "サポートに連絡", + "contactSupportDescription": "サポートチームがあらゆるご質問や問題に対応します。", + "yourName": "お名前", + "enterYourName": "お名前を入力", + "emailAddress": "メールアドレス", + "enterYourEmail": "メールアドレスを入力", + "subject": "件名", + "selectASubject": "件名を選択", + "bookingIssue": "予約の問題", + "paymentProblem": "支払いの問題", + "accountSettings": "アカウント設定", + "hostingQuestion": "ホスティングの質問", + "other": "その他", + "message": "メッセージ", + "describeYourIssueOrQuestion": "ご質問や問題の内容を入力してください", + "submitRequest": "リクエストを送信", + "communityForum": "コミュニティフォーラム", + "forumDescription": "他のユーザーとつながり、体験を共有し、コミュニティからアドバイスを得ましょう。", + "comingSoon": "近日公開!", + "forumComingSoonDescription": "コミュニティフォーラムは現在開発中です。他のSmart Rentユーザーとのディスカッションに参加するため、またご確認ください!", + "howCanWeHelpYou": "どのようにお手伝いできますか?", + "findAnswersOrContactSupport": "ご質問への回答を見つけるか、サポートチームにお問い合わせください", + "frequentlyAskedQuestions": "よくある質問", + "cantFindWhatYouAreLookingFor": "お探しのものが見つかりませんか?", + "contactOurSupportTeam": "サポートチームに連絡する", + "emailSupport": "メールサポート", + "emailSupportDescription": "メールサポートチームは24時間365日対応しています。", + "phoneSupport": "電話サポート", + "phoneSupportDescription": "営業時間内にカスタマーサービスチームにお電話ください。", + "availableMondayToFriday": "月曜~金曜、9時~18時(EST)対応", + "liveChat": "ライブチャット", + "liveChatDescription": "リアルタイムでサポートチームとチャットして迅速に対応します。", + "startAChatSession": "チャットを開始", + "available247": "24時間365日対応" +} diff --git a/frontend/src/locales/ja/Home.json b/frontend/src/locales/ja/Home.json new file mode 100644 index 0000000..74e4ddc --- /dev/null +++ b/frontend/src/locales/ja/Home.json @@ -0,0 +1,54 @@ +{ + "city-tours": "シティツアー", + "city-toursDesc": "地元ガイドと探索", + "outdoor-adventures": "アウトドアアドベンチャー", + "outdoor-adventuresDesc": "地元ガイドと探索", + "local-cuisine": "地元料理", + "local-cuisineDesc": "地元ガイドと探索", + "heroTitle": "<1>自宅のように感じる滞在先を見つけよう", + "heroDescription": "世界中のユニークな家、アパート、体験を発見しましょう — 快適さ、スタイル、忘れられない思い出のために厳選されています。", + "exploreStays": "滞在先を探す", + "becomeHost": "ホストになる", + + "inspirationTitle": "次の旅へのインスピレーション", + "inspirationSubtitle": "完璧なバケーションレンタルで人気の目的地を探索", + + "newYork": "ニューヨーク", + "newYorkProperties": "120件の物件", + "losAngeles": "ロサンゼルス", + "losAngelesProperties": "94件の物件", + "miami": "マイアミ", + "miamiProperties": "85件の物件", + "chicago": "シカゴ", + "chicagoProperties": "73件の物件", + + "stayAnywhereTitle": "どこでも滞在", + "stayAnywhereSubtitle": "あらゆるスタイルと予算に合うユニークな宿泊施設", + "apartments": "アパートメント", + "apartmentsDesc": "都会の快適さ", + "houses": "一軒家", + "housesDesc": "まるごと貸切", + "cabins": "キャビン", + "cabinsDesc": "素朴な隠れ家", + "villas": "ヴィラ", + "villasDesc": "ラグジュアリーな滞在", + + "discoverExperiencesTitle": "体験を発見", + "discoverExperiencesSubtitle": "地元の専門家が主催するアクティビティを探す", + "cityTours": "シティツアー", + "cityToursDesc": "地元ガイドと探索", + "outdoorAdventures": "アウトドアアドベンチャー", + "outdoorAdventuresDesc": "地元ガイドと探索", + "localCuisine": "地元料理", + "localCuisineDesc": "地元ガイドと探索", + + "becomeAHostTitle": "ホストになる", + "becomeAHostDesc": "スペースを共有して追加収入を得て、世界中のゲストとつながりましょう。", + "learnMore": "詳細はこちら", + "city-tours": "シティツアー", + "city-toursDesc": "地元ガイドと探索", + "outdoor-adventures": "アウトドアアドベンチャー", + "outdoor-adventuresDesc": "地元ガイドと探索", + "local-cuisine": "地元料理", + "local-cuisineDesc": "地元ガイドと探索" +} diff --git a/frontend/src/locales/ja/Login.json b/frontend/src/locales/ja/Login.json new file mode 100644 index 0000000..33a22b7 --- /dev/null +++ b/frontend/src/locales/ja/Login.json @@ -0,0 +1,11 @@ +{ + "loginTitle": "アカウントにログイン", + "createAccount": "または新しいアカウントを作成", + "email": "メールアドレス", + "password": "パスワード", + "rememberMe": "ログイン状態を保持する", + "forgotPassword": "パスワードをお忘れですか?", + "login": "ログイン", + "orContinueWith": "または次で続行", + "signInWithGoogle": "Googleでサインイン" +} diff --git a/frontend/src/locales/ja/NotFound.json b/frontend/src/locales/ja/NotFound.json new file mode 100644 index 0000000..45cab41 --- /dev/null +++ b/frontend/src/locales/ja/NotFound.json @@ -0,0 +1,5 @@ +{ + "notFoundTitle": "ページが見つかりません", + "notFoundMessage": "申し訳ありませんが、お探しのページは存在しません。", + "goHome": "ホームに戻る" +} diff --git a/frontend/src/locales/ja/Register.json b/frontend/src/locales/ja/Register.json new file mode 100644 index 0000000..8334739 --- /dev/null +++ b/frontend/src/locales/ja/Register.json @@ -0,0 +1,17 @@ +{ + "signInToExistingLink": "既存のアカウントにサインイン", + "signUpWithGoogle": "Googleで登録", + "signUpWithFacebook": "Facebookで登録", + "registerTitle": "アカウントを作成", + "signInToExisting": "または既存のアカウントにサインイン", + "firstName": "名", + "lastName": "姓", + "username": "ユーザー名(任意)", + "usernameHint": "空欄の場合はメールの一部を使用します", + "email": "メールアドレス", + "password": "パスワード", + "confirmPassword": "パスワードを確認", + "agreeTerms": "利用規約とプライバシーポリシーに同意します", + "register": "アカウントを作成", + "orContinueWith": "または次で続行" +} diff --git a/frontend/src/locales/ja/ReportConcern.json b/frontend/src/locales/ja/ReportConcern.json new file mode 100644 index 0000000..764fbf5 --- /dev/null +++ b/frontend/src/locales/ja/ReportConcern.json @@ -0,0 +1,51 @@ +{ + "title": "懸念事項の報告", + "subtitle": "あなたの安全と満足が私たちの最優先事項です。問題や懸念があればお知らせください。", + "thankYouTitle": "ご報告ありがとうございます", + "thankYouMsg1": "ご報告いただいた内容を受け取りました。速やかに確認いたします。追加情報が必要な場合は、当社チームよりメールでご連絡いたします。", + "thankYouMsg2": "参照番号:", + "returnHome": "ホームに戻る", + "visitHelp": "ヘルプセンターを訪問", + "howToTitle": "懸念事項の報告方法", + "howToDesc": "すべての報告を真剣に受け止め、徹底的に調査します。できるだけ詳細な情報をご提供ください。", + "emergency": "緊急の場合:", + "emergencyDesc": "緊急事態の場合は、直ちに地元の緊急サービスに連絡し、緊急番号に電話してください。", + "submitTitle": "報告を送信する", + "concernTypeLabel": "懸念の種類 *", + "concernTypePlaceholder": "懸念の種類を選択", + "concernTypes": [ + "安全上の懸念", + "詐欺の可能性", + "詐欺または誤解を招くリスティング", + "差別", + "物件の損傷", + "アクセシビリティの問題", + "アカウントのセキュリティ", + "その他の懸念" + ], + "listingIdLabel": "リスティング/予約ID(該当する場合)", + "listingIdPlaceholder": "例:LIST12345 または RES67890", + "listingIdHelp": "ご報告の対象となるリスティングや予約を特定するのに役立ちます。", + "descriptionLabel": "懸念事項の詳細 *", + "descriptionPlaceholder": "できるだけ詳細にご記入ください...", + "attachmentsLabel": "添付ファイル(任意)", + "attachmentsUpload": "ファイルをアップロード", + "attachmentsOr": "またはドラッグ&ドロップ", + "attachmentsHelp": "PNG、JPG、PDF 最大10MB", + "contactTitle": "ご連絡先情報", + "nameLabel": "お名前 *", + "emailLabel": "メールアドレス *", + "phoneLabel": "電話番号(任意)", + "privacyNotice": "<1>プライバシーポリシーに記載のとおり、私の情報が処理されることを理解しています", + "submitBtn": "報告を送信する", + "safetyInfoTitle": "安全情報", + "safetyInfoDesc": "ゲストとホストのための安全ガイドラインとプロトコルについてご確認ください。", + "helpCenterTitle": "ヘルプセンター", + "helpCenterDesc": "よくある質問やヘルプガイドをご覧ください。", + "contactSupportTitle": "サポートに連絡", + "contactSupportDesc": "カスタマーサポートチームにご連絡ください。", + "emergencyLineTitle": "緊急ライン", + "emergencyLineDesc": "緊急時は当社の緊急サポートラインにお電話ください。", + "additionalResources": "追加リソース" + ,"attachmentsUploadNoFile": "ファイルが選択されていません" +} \ No newline at end of file diff --git a/frontend/src/locales/ja/Safety.json b/frontend/src/locales/ja/Safety.json new file mode 100644 index 0000000..cb0ed74 --- /dev/null +++ b/frontend/src/locales/ja/Safety.json @@ -0,0 +1,48 @@ +{ + "headerTitle": "あなたの安全が最優先です", + "headerSubtitle": "Smart Rent Systemは、ホストとゲストのために安全な環境を作ることに尽力しています", + "commitmentTitle": "安全への取り組み", + "commitmentDesc1": "Smart Rent Systemでは、コミュニティの安全と健康を最優先しています。ホストとゲストの両方が安心してプラットフォームを利用できるよう、包括的な安全対策、本人確認プロセス、サポート体制を導入しています。", + "commitmentDesc2": "このページでは、安全対策、緊急時のリソース、サービス利用時の安全ガイドラインについてご案内します。", + "featuresTitle": "主な安全機能", + "featureVerifiedTitle": "認証済みプロフィール", + "featureVerifiedDesc": "すべてのユーザーは、予約やホストをする前に本人確認を受けます。これにより、コミュニティのメンバーが本人であることを保証します。", + "featurePropertyTitle": "物件基準", + "featurePropertyDesc": "当プラットフォームに掲載されている物件は、煙探知機や一酸化炭素探知機など、基本的な安全要件を満たしている必要があります。", + "featureSupportTitle": "24時間365日サポート", + "featureSupportDesc": "カスタマーサポートチームは、あらゆる安全上の懸念や緊急事態に24時間対応しています。", + "tipsTitle": "安全のヒント", + "tipsGuestsTitle": "ゲスト向け", + "tipsGuests1": "物件の詳細、安全機能、ハウスルールをよく確認しましょう。", + "tipsGuests2": "過去のゲストのレビューを読んで、物件やホストについての情報を得ましょう。", + "tipsGuests3": "安全のため、Smart Rent Systemプラットフォーム内でやり取りを行いましょう。", + "tipsGuests4": "到着時に非常口や安全設備を確認しましょう。", + "tipsGuests5": "信頼できる友人や家族に旅程を共有しましょう。", + "tipsHostsTitle": "ホスト向け", + "tipsHosts1": "煙探知機、一酸化炭素探知機、消火器を設置・維持しましょう。", + "tipsHosts2": "チェックイン手順と緊急連絡先情報を明確に提供しましょう。", + "tipsHosts3": "すべてのドアや窓(寝室を含む)に適切な鍵を設置しましょう。", + "tipsHosts4": "地元の医療機関や緊急連絡先を記載したガイドを作成・掲示しましょう。", + "tipsHosts5": "予約を受け入れる前にゲストのプロフィールややり取りを確認しましょう。", + "covidTitle": "COVID-19安全対策", + "covidDesc": "多くの地域でCOVID-19の制限が緩和されていますが、コミュニティを守るための安全対策を推奨し続けています:", + "covidCleaningTitle": "強化された清掃プロトコル", + "covidCleaningDesc": "ホストは、ゲストの入れ替え時に高頻度接触面の消毒や手指消毒剤の提供など、強化された清掃手順を守ることを推奨します。", + "covidFlexibleTitle": "柔軟な予約オプション", + "covidFlexibleDesc": "多くの物件が、健康上の理由による旅行計画の予期せぬ変更に対応できる柔軟なキャンセルポリシーを提供しています。", + "emergencyTitle": "緊急時のリソース", + "emergencyImmediateTitle": "緊急時", + "emergencyImmediateDesc": "命に関わる緊急事態の場合は、すぐに地元の緊急サービスに連絡してください:", + "emergencyNumber": "119", + "emergencyNumberNote": "(または地域に応じた緊急連絡先番号)", + "emergencySupportTitle": "Smart Rent System緊急サポート", + "emergencySupportDesc": "命に関わらないが即時対応が必要な緊急事態の場合:", + "emergencySupportLineLabel": "緊急サポートライン", + "emergencySupportLine": "+81 3-1234-5678", + "emergencySupportEmailLabel": "安全メール", + "emergencySupportEmail": "safety@smartrent.com", + "reportTitle": "安全上の懸念の報告", + "reportDesc": "安全上の問題や予約・掲載物件に関する懸念がある場合は、すぐにご報告ください。皆様の報告が、すべての方にとって安全なプラットフォームの維持に役立ちます。", + "reportContactSupport": "サポートに連絡", + "reportVisitHelpCenter": "ヘルプセンターを訪問" +} diff --git a/frontend/src/locales/ja/Terms.json b/frontend/src/locales/ja/Terms.json new file mode 100644 index 0000000..0883492 --- /dev/null +++ b/frontend/src/locales/ja/Terms.json @@ -0,0 +1,75 @@ +{ + "termsTitle": "利用規約", + "termsSubtitle": "Smart Rent Systemの利用規則とガイドライン", + "lastUpdated": "最終更新日: 2023年11月15日", + "welcome": "Smart Rent Systemへようこそ。本利用規約は、Smart Rent Systemのウェブサイト、アプリ、サービスへのアクセスおよび利用を規定します。サービスにアクセスまたは利用することで、本規約に同意したものとみなされます。", + "acceptanceTitle": "1. 規約への同意", + "acceptance": "サービスに登録または何らかの方法で利用することで、本規約およびSmart Rent Systemが公開するすべてのルール、ポリシー、手順に同意したものとみなされます。本規約は、ホスト、ゲスト、一般訪問者を含むすべての利用者に適用されます。", + "accountTitle": "2. アカウント登録", + "account": "サービスの特定の機能にアクセスするには、アカウント登録が必要です。登録時には以下に同意するものとします:", + "accountList": [ + "正確かつ最新で完全な情報を提供すること", + "アカウント情報を速やかに更新・維持すること", + "アカウントとパスワードの安全を確保すること", + "アカウントへの不正アクセスのリスクをすべて受け入れること", + "アカウントの不正使用が判明した場合は直ちに通知すること" + ], + "accountNote": "当社は、独自の裁量でサービスの提供拒否、アカウントの削除、コンテンツの削除を行う権利を有します。", + "contentTitle": "3. コンテンツと行動", + "content": "本サービスでは、情報、テキスト、画像、動画、その他の素材を投稿、リンク、保存、共有、公開できます。投稿したコンテンツおよびその結果については、利用者自身が責任を負います。コンテンツを投稿することで、必要な権利を有していることを表明します。", + "contentList": [ + "違法、有害、脅迫的、虐待的、差別的なコンテンツの投稿禁止", + "他人や団体になりすまさないこと", + "他人や団体との関係を偽ったり誤解させたりしないこと", + "他人の個人情報や機密情報を許可なく投稿しないこと", + "他の利用者のサービス利用を妨げる行為をしないこと", + "違法目的や法令違反でサービスを利用しないこと", + "ウイルスや悪意のあるコードをアップロードしないこと", + "サービスのセキュリティ機能を回避しようとしないこと" + ], + "bookingTitle": "4. 予約とレンタル", + "bookingGuest": "ゲストとして予約を行う場合、以下に同意します:", + "bookingGuestList": [ + "予約に関連するすべての料金、税金、その他の費用を支払うこと", + "滞在中の自身の行動に責任を持つこと", + "ホストのハウスルールやチェックアウト手順を守ること", + "物件を元の状態で返却すること", + "損傷や問題があれば直ちに報告すること" + ], + "bookingHost": "ホストとして物件を掲載する場合、以下に同意します:", + "bookingHostList": [ + "物件情報を正確かつ完全に提供すること", + "物件を安全かつ清潔な状態に保つこと", + "予約リクエストに迅速に対応すること", + "確定した予約を遵守すること", + "税金、ゾーニング、安全規制など、すべての適用法令を遵守すること" + ], + "cancellationTitle": "5. キャンセルと返金", + "cancellation": "キャンセルおよび返金は、ホストが各リスティングに設定したキャンセルポリシーに従って処理されます。このポリシーは予約前に各リスティングで表示されます。予約を完了することで、ゲストはホストのキャンセルポリシーに同意したものとみなされます。", + "cancellationMore": "詳細は<1>キャンセルポリシーをご覧ください。", + "feesTitle": "6. 手数料と支払い", + "fees": "Smart Rent Systemは、プラットフォーム利用に対してゲストおよびホストの双方からサービス手数料を徴収します。手数料は予約小計の一定割合で計算され、支払い前に明確に表示されます。サービス利用により、すべての適用手数料の支払いに同意したものとみなされます。すべての支払いは当社プラットフォームを通じて安全に処理されます。", + "disclaimerTitle": "7. 免責事項および責任制限", + "disclaimer": "本サービスは「現状有姿」および「利用可能な範囲」で提供されます。Smart Rent Systemは、明示または黙示を問わず、商品性、特定目的への適合性、非侵害性など、あらゆる種類の保証を明示的に否認します。", + "liability": "Smart Rent Systemは、サービスへのアクセスまたは利用、またはアクセス・利用不能に起因する間接的、偶発的、特別、結果的、懲罰的損害(利益、データ、使用、信用、その他の無形損失を含む)について、一切の責任を負いません。", + "indemnificationTitle": "8. 免責・補償", + "indemnification": "利用者は、サービスの利用、規約違反、他者の権利侵害に起因または関連する請求、責任、損害、損失、費用(合理的な弁護士費用を含む)について、Smart Rent Systemおよびその役員、取締役、従業員、代理人を防御し、補償し、免責することに同意します。", + "modificationsTitle": "9. 規約の変更", + "modifications": "当社は、いつでも本規約を変更する権利を有します。変更があった場合、ウェブサイト上に更新規約を掲載し、「最終更新日」を更新することで通知します。通知後もサービスを継続利用することで、新しい規約に同意したものとみなされます。", + "lawTitle": "10. 準拠法", + "law": "本規約は[管轄]の法律に準拠し、これに従って解釈されます。利用者は[管轄]所在の裁判所の専属的管轄権に服することに同意します。", + "contactTitle": "11. お問い合わせ先", + "contact": "本規約に関するご質問は、以下までご連絡ください:", + "email": "メール: legal@smartrentsystem.com", + "address": "郵送先: 123 Rent Street, 市, 国", + "phone": "電話: +1 (123) 456-7890", + "privacy": "プライバシーポリシー", + "privacyDesc": "情報の収集・利用・保護方法についてご確認ください。", + "readPrivacy": "プライバシーポリシーを読む", + "cookie": "クッキーポリシー", + "cookieDesc": "当ウェブサイトでのクッキーや類似技術の利用についてご確認ください。", + "readCookie": "クッキーポリシーを読む", + "help": "ヘルプセンター", + "helpDesc": "利用規約やポリシーに関するよくある質問への回答はこちら。", + "visitHelp": "ヘルプセンターを訪問" +} diff --git a/frontend/src/locales/ja/footer.json b/frontend/src/locales/ja/footer.json new file mode 100644 index 0000000..114c8fa --- /dev/null +++ b/frontend/src/locales/ja/footer.json @@ -0,0 +1,27 @@ +{ + "companyDescription": "理想の家を見つけましょう。SmartRentは、認証済みホストと高品質なリスティングによる安全な賃貸プラットフォームを提供します。", + "quickLinks": "クイックリンク", + "home": "ホーム", + "aboutUs": "私たちについて", + "contact": "お問い合わせ", + "blog": "ブログ", + "support": "サポート", + "help": "ヘルプ", + "safetyInformation": "安全情報", + "cancellationOptions": "キャンセルオプション", + "reportConcern": "懸念を報告する", + "faq": "よくある質問", + "contactUs": "お問い合わせ", + "address": "123 レントストリート、市、国", + "subscribeNewsletter": "ニュースレターを購読する", + "yourEmail": "あなたのメール", + "subscribing": "購読中...", + "subscribeSuccess": "ご購読ありがとうございます!", + "subscribeError": "有効なメールアドレスを入力してください。", + "privacyPolicy": "プライバシーポリシー", + "termsOfService": "利用規約", + "cookiePolicy": "クッキーポリシー", + "phone": "+81 123-456-7890", + "email": "info@smartrentsystem.com", + "allRightsReserved": "全著作権所有。" +} diff --git a/frontend/src/locales/ja/navbar.json b/frontend/src/locales/ja/navbar.json new file mode 100644 index 0000000..43f9dc0 --- /dev/null +++ b/frontend/src/locales/ja/navbar.json @@ -0,0 +1,19 @@ +{ + "search": "検索", + "login": "ログイン", + "signup": "サインアップ", + "logout": "ログアウト", + "profile": "プロフィール", + "help": "ヘルプ", + "becomeHost": "ホストになる", + "messages": "メッセージ", + "trips": "旅行", + "wishlist": "ウィッシュリスト", + "account": "アカウント", + "settings": "設定", + "popularSuggestions": ["東京", "大阪", "京都", "札幌", "福岡"], + "recentSearches": "最近の検索", + "clear": "クリア", + "popularDestinations": "人気の目的地", + "explore": "探す" +} diff --git a/frontend/src/locales/ru/About.json b/frontend/src/locales/ru/About.json new file mode 100644 index 0000000..2643443 --- /dev/null +++ b/frontend/src/locales/ru/About.json @@ -0,0 +1,48 @@ + +{ + "aboutTitle": "О Smart Rent System", + "aboutSubtitle": "Делаем аренду недвижимости простой, безопасной и приятной для всех.", + "missionTitle": "Наша миссия", + "missionText": "Smart Rent System была основана в 2020 году с простой миссией: сделать аренду недвижимости доступной, безопасной и приятной для всех. Мы заметили, что традиционный процесс аренды часто был сложным, долгим и непрозрачным.", + "visionTitle": "Наше видение", + "visionText": "Мы стремились создать платформу, которая бы бесшовно соединяла владельцев недвижимости с потенциальными арендаторами, предоставляя инструменты, делающие весь процесс — от размещения до бронирования и проживания — максимально простым. Сегодня Smart Rent System размещает тысячи объектов по всему миру, помогая путешественникам находить идеальное временное жилье и позволяя владельцам недвижимости максимально использовать свой арендный потенциал с минимальными хлопотами.", + "ourValuesTitle": "Наши ценности", + "trustSafetyTitle": "Доверие и безопасность", + "trustSafetyDesc": "Мы верим в создание безопасной среды для хозяев и гостей с прозрачными правилами и безопасными транзакциями.", + "globalCommunityTitle": "Глобальное сообщество", + "globalCommunityDesc": "Мы ценим разнообразие и стремимся создавать связи между людьми разных культур и происхождения.", + "innovationTitle": "Инновации", + "innovationDesc": "Мы постоянно совершенствуем нашу платформу и сервисы, чтобы предоставить лучший опыт всем пользователям.", + "teamTitle": "Познакомьтесь с нашей командой", + "teamText": "Наша команда стремится к тому, чтобы каждый пользователь получал исключительную поддержку и имел положительный опыт с Smart Rent System.", + "joinOurCommunity": "Присоединяйтесь к нашему сообществу", + "joinOurCommunityDesc": "Ищете ли вы место для проживания или хотите поделиться своей недвижимостью с путешественниками, Smart Rent System всегда готов помочь.", + "exploreProperties": "Посмотреть объекты", + "becomeHost": "Стать хозяином", + "teamMembers": [ + { + "name": "Джейн Смит", + "role": "Генеральный директор и основатель", + "image": "https://randomuser.me/api/portraits/women/32.jpg", + "bio": "Джейн основала Smart Rent System с целью изменить способ поиска и бронирования жилья по всему миру." + }, + { + "name": "Майкл Джонсон", + "role": "Технический директор (CTO)", + "image": "https://randomuser.me/api/portraits/men/42.jpg", + "bio": "Майкл возглавляет нашу техническую команду, обеспечивая безопасность, скорость и удобство платформы для хозяев и гостей." + }, + { + "name": "Сара Чен", + "role": "Руководитель операций", + "image": "https://randomuser.me/api/portraits/women/22.jpg", + "bio": "Сара контролирует повседневную работу, чтобы хозяева и гости получали безупречный опыт на нашей платформе." + }, + { + "name": "Джеймс Уилсон", + "role": "Руководитель по работе с клиентами", + "image": "https://randomuser.me/api/portraits/men/32.jpg", + "bio": "Джеймс стремится к тому, чтобы каждый пользователь получал исключительную поддержку и имел положительный опыт с Smart Rent System." + } + ] +} diff --git a/frontend/src/locales/ru/Account.json b/frontend/src/locales/ru/Account.json new file mode 100644 index 0000000..e4de7a0 --- /dev/null +++ b/frontend/src/locales/ru/Account.json @@ -0,0 +1,35 @@ +{ + "accountSettings": "Настройки аккаунта", + "profile": "Профиль", + "payment": "Платежные методы", + "security": "Безопасность", + "notifications": "Уведомления", + "privacy": "Конфиденциальность", + "mustBeLoggedIn": "Вы должны войти, чтобы просматривать эту страницу", + "goToLogin": "Перейти к входу", + "logOut": "Выйти", + "profileInformation": "Информация профиля", + "firstName": "Имя", + "lastName": "Фамилия", + "email": "Электронная почта", + "phone": "Телефон", + "dateOfBirth": "Дата рождения", + "street": "Улица", + "city": "Город", + "state": "Штат/область", + "zipCode": "Почтовый индекс", + "country": "Страна", + "saveChanges": "Сохранить изменения", + "profileUpdated": "Профиль успешно обновлен!", + "profileUpdateFailed": "Не удалось обновить профиль: {{error}}", + "profileUpdateError": "Произошла ошибка при обновлении профиля", + "removeProfileImageConfirm": "Вы уверены, что хотите удалить фото профиля?", + "removeProfileImageError": "Ошибка при удалении фото профиля: {{error}}", + "removeProfileImageGenericError": "Ошибка при удалении фото профиля", + "uploadProfileImageError": "Ошибка при загрузке фото профиля: {{error}}", + "uploadProfileImageGenericError": "Ошибка при загрузке фото профиля", + "areYouSureRemovePayment": "Вы уверены, что хотите удалить этот способ оплаты?", + "default": "По умолчанию", + "setDefault": "Сделать по умолчанию", + "remove": "Удалить" +} diff --git a/frontend/src/locales/ru/BecomeHost.json b/frontend/src/locales/ru/BecomeHost.json new file mode 100644 index 0000000..dd66bda --- /dev/null +++ b/frontend/src/locales/ru/BecomeHost.json @@ -0,0 +1,71 @@ +{ + "becomeAHost": "Стать хозяином", + "step1Title": "Тип недвижимости", + "step2Title": "Местоположение", + "step3Title": "Удобства", + "step4Title": "Фотографии", + "step5Title": "Детали и цена", + "propertyType": "Тип недвижимости", + "propertyCategory": "Категория недвижимости", + "selectPropertyType": "Выберите тип недвижимости", + "selectPropertyCategory": "Выберите категорию недвижимости", + "address": "Адрес", + "city": "Город", + "state": "Штат/область", + "zipCode": "Почтовый индекс", + "country": "Страна", + "amenities": "Удобства", + "selectAmenities": "Выберите удобства", + "photos": "Фотографии", + "uploadPhotos": "Загрузить фотографии", + "title": "Заголовок", + "description": "Описание", + "price": "Цена за ночь", + "guests": "Гости", + "bedrooms": "Спальни", + "beds": "Кровати", + "bathrooms": "Ванные комнаты", + "continue": "Продолжить", + "back": "Назад", + "publishListing": "Опубликовать объявление", + "cancel": "Отмена", + "termsOfService": "Условия обслуживания", + "hostPolicies": "Политика хозяина", + "agreeToTerms": "Становясь хозяином, вы соглашаетесь с нашими {termsOfService} и {hostPolicies}.", + "uploading": "Загрузка...", + "remove": "Удалить", + "selectCurrency": "Выбрать валюту", + "selectLanguage": "Выбрать язык" +} + + "house": "Дом", + "apartment": "Квартира", + "guesthouse": "Гостевой дом", + "hotel": "Отель", + "cabin": "Коттедж", + "villa": "Вилла", + "beach": "Пляж", + "mountain": "Гора", + "city": "Город", + "countryside": "Деревня", + "lake": "Озеро", + "desert": "Пустыня", + "wifi": "Wi-Fi", + "kitchen": "Кухня", + "washer": "Стиральная машина", + "dryer": "Сушилка", + "ac": "Кондиционер", + "heating": "Отопление", + "tv": "Телевизор", + "parking": "Бесплатная парковка", + "pool": "Бассейн", + "hottub": "Горячая ванна", + "gym": "Тренажерный зал", + "pets": "Разрешены животные", + "usd": "Доллар США", + "eur": "Евро", + "gbp": "Британский фунт", + "jpy": "Японская иена", + "cad": "Канадский доллар", + "aud": "Австралийский доллар", + "inr": "Индийская рупия" diff --git a/frontend/src/locales/ru/Blog.json b/frontend/src/locales/ru/Blog.json new file mode 100644 index 0000000..5b151cb --- /dev/null +++ b/frontend/src/locales/ru/Blog.json @@ -0,0 +1,18 @@ +{ + "blogTitle": "Блог Smart Rent", + "blogSubtitle": "Советы путешественникам, путеводители и идеи для максимального использования ваших поездок", + "featuredArticles": "Избранные статьи", + "allPosts": "Все записи", + "tips": "Советы путешественникам", + "destinations": "Направления", + "hosting": "Советы для хозяев", + "news": "Новости компании", + "noPostsFound": "Посты не найдены", + "noPostsAvailable": "В этой категории пока нет постов.", + "viewAllPosts": "Посмотреть все записи", + "subscribeNewsletter": "Подписаться на рассылку", + "newsletterDesc": "Получайте последние советы путешественникам, путеводители и новости Smart Rent прямо на ваш e-mail.", + "yourEmail": "Ваш e-mail", + "subscribe": "Подписаться", + "privacyConsent": "Подписываясь, вы соглашаетесь с нашей политикой конфиденциальности и даёте согласие на получение новостей от нашей компании." +} diff --git a/frontend/src/locales/ru/Cancellation.json b/frontend/src/locales/ru/Cancellation.json new file mode 100644 index 0000000..7331171 --- /dev/null +++ b/frontend/src/locales/ru/Cancellation.json @@ -0,0 +1,62 @@ +{ + "cancellationTitle": "Политика отмены", + "cancellationSubtitle": "Прозрачные и гибкие варианты для вашего спокойствия при бронировании", + "understandingPolicies": "Понимание наших политик", + "intro1": "В Smart Rent System мы понимаем, что планы могут меняться. Наши политики отмены разработаны для обеспечения ясности и гибкости для гостей и хозяев.", + "intro2": "Каждая недвижимость на нашей платформе имеет одну из приведённых ниже политик отмены. Конкретная политика для объекта чётко указана на странице объявления до бронирования.", + "forGuests": "Для гостей", + "forHosts": "Для хозяев", + "guestIntro": "При бронировании недвижимости ознакомьтесь с её политикой отмены, чтобы понять свои варианты возврата средств. Вот что означает каждая политика для вас как для гостя:", + "hostIntro": "Как хозяин, вы можете выбрать политику отмены, которая лучше всего подходит для вашей недвижимости и бизнеса. При выборе политики учитывайте следующее:", + "flexible": "Гибкая", + "moderate": "Умеренная", + "strict": "Строгая", + "nonrefundable": "Без возврата", + "flexibleDesc": "Полный возврат при отмене не менее чем за 24 часа до заезда", + "moderateDesc": "Полный возврат при отмене не менее чем за 5 дней до заезда", + "strictDesc": "Полный возврат при отмене не менее чем за 14 дней до заезда", + "nonrefundableDesc": "Специальная скидка без возврата при отмене", + "fullRefund": "Полный возврат", + "partialRefund": "Частичный возврат", + "noRefund": "Без возврата", + "discountedRate": "Скидочная цена", + "travelInsurance": "Страхование путешествий", + "flexibleFull": "При отмене не менее чем за 24 часа до заезда (14:00 по местному времени)", + "flexiblePartial": "При отмене менее чем за 24 часа до заезда первая ночь не возвращается, но 50% оставшихся ночей возвращается", + "flexibleNone": "Если гость приезжает и решает уехать раньше, неиспользованные ночи не возвращаются", + "moderateFull": "При отмене не менее чем за 5 дней до заезда (14:00 по местному времени)", + "moderatePartial": "При отмене менее чем за 5 дней до заезда первая ночь не возвращается, но 50% оставшихся ночей возвращается", + "moderateNone": "Если гость приезжает и решает уехать раньше, неиспользованные ночи не возвращаются", + "strictFull": "При отмене не менее чем за 14 дней до заезда (14:00 по местному времени)", + "strictPartial": "При отмене за 7-14 дней до заезда возвращается 50% от общей стоимости", + "strictNone": "При отмене менее чем за 7 дней до заезда или незаезде возврат не производится", + "nonrefundableDiscount": "Гости получают скидку 10-15% от стандартной цены недвижимости", + "nonrefundableNone": "Возврат средств за отмену не производится независимо от времени отмены", + "nonrefundableInsurance": "Мы настоятельно рекомендуем гостям приобретать страховку путешествий при выборе этого варианта", + "hostTipFlexible": "Эта политика хороша для привлечения гостей, которые не уверены в бронировании. Хорошо подходит для бронирований в последнюю минуту и в конкурентных районах.", + "hostTipModerate": "Эта сбалансированная политика предлагает хороший компромисс между гибкостью для гостей и безопасностью для хозяев. Хорошо подходит для большинства типов недвижимости.", + "hostTipStrict": "Эта политика обеспечивает большую безопасность для хозяев в районах с высоким спросом или в пиковые сезоны, когда повторное бронирование отменённых дат может быть затруднено.", + "hostTipNonrefundable": "Этот вариант позволяет вам предложить скидку и обеспечить безопасность оплаты. Лучше всего подходит для недвижимости с высоким спросом или в пиковые сезоны.", + "extenuatingCircumstances": "Политика форс-мажорных обстоятельств", + "extenuatingDesc1": "В редких случаях мы можем отменить стандартную политику отмены недвижимости и выдать частичный или полный возврат. Эти исключения делаются для непредвиденных обстоятельств, которые:", + "extenuatingList1": "Происходят до или во время проживания", + "extenuatingList2": "Делают невозможным или небезопасным завершение проживания", + "extenuatingList3": "Непредсказуемы на момент бронирования", + "extenuatingDesc2": "Примеры: стихийные бедствия, чрезвычайные ситуации, объявленные правительством, серьёзные болезни или травмы, или перебои в транспорте, делающие невозможным прибытие к месту назначения.", + "extenuatingDesc3": "Для подтверждения форс-мажорных обстоятельств может потребоваться документация.", + "faqsTitle": "Часто задаваемые вопросы", + "needHelp": "Нужна дополнительная помощь?", + "needHelpDesc": "Если у вас есть вопросы по конкретному бронированию или нужна помощь с отменой, наша служба поддержки готова помочь.", + "contactSupport": "Связаться с поддержкой", + "visitHelp": "Посетить центр помощи", + "faq1Q": "Что произойдет, если я отменю бронирование?", + "faq1A": "Если вы отмените бронирование, возврат средств будет зависеть от политики отмены объекта. Пожалуйста, ознакомьтесь с деталями политики на странице вашего бронирования или объявления.", + "faq2Q": "Как запросить отмену?", + "faq2A": "Чтобы запросить отмену, перейдите на страницу 'Поездки', выберите бронирование и нажмите 'Отменить'. Следуйте инструкциям для завершения запроса.", + "faq3Q": "Когда я получу возврат средств?", + "faq3A": "Возвраты обычно обрабатываются в течение 5-10 рабочих дней после отмены, в зависимости от вашего платежного провайдера.", + "faq4Q": "Могу ли я изменить даты бронирования вместо отмены?", + "faq4A": "Да, вы можете запросить изменение дат бронирования на странице 'Поездки'. Одобрение зависит от доступности у хозяина.", + "faq5Q": "Что делать, если мне нужно отменить из-за чрезвычайной ситуации?", + "faq5A": "Если вам нужно отменить из-за чрезвычайной ситуации или непредвиденных обстоятельств, пожалуйста, свяжитесь с нашей службой поддержки. Мы можем предложить дополнительную гибкость." +} diff --git a/frontend/src/locales/ru/Contact.json b/frontend/src/locales/ru/Contact.json new file mode 100644 index 0000000..a2c8d7f --- /dev/null +++ b/frontend/src/locales/ru/Contact.json @@ -0,0 +1,20 @@ +{ + "contactTitle": "Связаться с нами", + "contactSubtitle": "Мы всегда готовы помочь. Свяжитесь с нами в любое время.", + "phoneLabel": "Телефон", + "phoneValue": "+1 (800) 123-4567", + "officeHoursLabel": "Часы работы", + "officeHoursValue": "Пн-Пт, 9:00-18:00", + "emailContactLabel": "Электронная почта", + "emailContactValue": "support@smartrent.com", + "successMessage": "Ваше сообщение успешно отправлено!", + "addressLabel": "Адрес", + "addressValue": "123 Smart Rent Street\nСан-Франциско, CA 94103", + "connectWithUs": "Связаться с нами", + "formIntro": "Заполните форму ниже, и мы скоро свяжемся с вами.", + "nameLabel": "Имя", + "emailLabel": "Электронная почта", + "subjectLabel": "Тема", + "messageLabel": "Сообщение", + "submitButton": "Отправить сообщение" +} diff --git a/frontend/src/locales/ru/ErrorBoundary.json b/frontend/src/locales/ru/ErrorBoundary.json new file mode 100644 index 0000000..3b3fdf4 --- /dev/null +++ b/frontend/src/locales/ru/ErrorBoundary.json @@ -0,0 +1,5 @@ +{ + "errorTitle": "Что-то пошло не так.", + "errorMessage": "Произошла непредвиденная ошибка. Пожалуйста, обновите страницу или обратитесь в поддержку, если проблема не исчезнет.", + "refresh": "Обновить" +} diff --git a/frontend/src/locales/ru/FAQ.json b/frontend/src/locales/ru/FAQ.json new file mode 100644 index 0000000..1db2b6b --- /dev/null +++ b/frontend/src/locales/ru/FAQ.json @@ -0,0 +1,38 @@ +{ + "faqTitle": "Часто задаваемые вопросы", + "faqSubtitle": "Найдите ответы на самые распространённые вопросы о Smart Rent System", + "categories": { + "general": "Общие вопросы", + "booking": "Бронирование и аренда", + "payment": "Платежи и возвраты", + "host": "Вопросы по размещению", + "safety": "Безопасность", + "account": "Управление аккаунтом" + }, + "needMoreHelp": "Нужна дополнительная помощь?", + "needMoreHelpDesc": "Если вы не нашли нужный ответ, наша служба поддержки готова помочь.", + "contactSupport": "Связаться с поддержкой", + "categoriesLabel": "Категории", + "helpCenter": "Центр помощи", + "helpCenterDesc": "Просмотрите подробные руководства, инструкции и советы по использованию Smart Rent.", + "visitHelpCenter": "Посетить центр помощи", + "safetyInfo": "Информация о безопасности", + "safetyInfoDesc": "Узнайте о наших протоколах безопасности, рекомендациях для гостей и хозяев, а также о ресурсах для экстренных случаев.", + "viewSafetyGuidelines": "Посмотреть рекомендации по безопасности" + , + "categories": { + "general": "Общие вопросы", + "booking": "Бронирование и проживание", + "payment": "Оплата и возвраты", + "host": "Вопросы для хозяев", + "safety": "Безопасность", + "account": "Управление аккаунтом" + }, + "categoriesLabel": "Категории", + "general": [], + "booking": [], + "payment": [], + "host": [], + "safety": [], + "account": [] +} diff --git a/frontend/src/locales/ru/Help.json b/frontend/src/locales/ru/Help.json new file mode 100644 index 0000000..4b89aea --- /dev/null +++ b/frontend/src/locales/ru/Help.json @@ -0,0 +1,84 @@ +{ + "helpTitle": "Центр помощи", + "helpSubtitle": "Чем мы можем вам помочь?", + "searchPlaceholder": "Поиск по темам помощи...", + "contactSupport": "Связаться с поддержкой", + "faq": "Часто задаваемые вопросы", + "noResults": "Статьи помощи не найдены.", + "backToHome": "Вернуться на главную", + "howCanWeHelp": "Чем мы можем вам помочь?", + "findAnswers": "Найдите ответы на свои вопросы или свяжитесь с нашей службой поддержки", + "searchForAnswers": "Поиск ответов...", + "helpGuidesTitle": "Руководства по помощи", + "helpGuidesDesc": "Подробные руководства по использованию функций Smart Rent", + "viewGuides": "Посмотреть руководства", + "safetyInfo": "Информация о безопасности", + "cancellationPolicies": "Политика отмены", + "reportConcern": "Сообщить о проблеме", + "contactSupportDesc": "Свяжитесь с нашей службой поддержки клиентов", + "contactUs": "Связаться с нами", + "communityForum": "Форум сообщества", + "communityForumDesc": "Общайтесь с другими пользователями и делитесь своим опытом", + "joinDiscussion": "Присоединиться к обсуждению", + "faq": "Часто задаваемые вопросы", + "categoryGeneral": "Общее", + "categoryAccount": "Аккаунт и профиль", + "categoryBooking": "Бронирование и резервации", + "categoryPayment": "Платежи и возвраты", + "categoryHosting": "Хостинг", + "categorySafety": "Безопасность и доступность", + "generalFaqs": "Общие вопросы", + "whatIsSmartRent": "Что такое Smart Rent?", + "howToUseSmartRent": "Как пользоваться Smart Rent?", + "howToContactService": "Как связаться со службой поддержки?", + "cantFind": "Не можете найти то, что ищете?", + "contactOurSupport": "Свяжитесь с нашей службой поддержки", + "emailSupport": "Поддержка по электронной почте", + "emailSupportDesc": "Наша команда поддержки по электронной почте доступна 24/7 для помощи вам.", + "phoneSupport": "Телефонная поддержка", + "phoneSupportDesc": "Позвоните в нашу службу поддержки для немедленной помощи в рабочее время.", + "phoneSupportHours": "Доступно с понедельника по пятницу, с 9:00 до 18:00 (EST)", + "liveChat": "Онлайн-чат", + "liveChatDesc": "Общайтесь с нашей службой поддержки в режиме реального времени для быстрой помощи.", + "startChat": "Начать чат-сессию", + "available247": "Доступно 24/7", + "helpGuides": "Руководства по помощи", + "helpGuidesDescription": "Подробные руководства по использованию функций и сервисов Smart Rent.", + "safetyInformation": "Информация о безопасности", + "cancellationPolicies": "Политика отмены", + "reportAConcern": "Сообщить о проблеме", + "contactSupport": "Связаться с поддержкой", + "contactSupportDescription": "Наша команда поддержки всегда готова помочь вам с любыми вопросами.", + "yourName": "Ваше имя", + "enterYourName": "Введите ваше имя", + "emailAddress": "Электронная почта", + "enterYourEmail": "Введите вашу почту", + "subject": "Тема", + "selectASubject": "Выберите тему", + "bookingIssue": "Проблема с бронированием", + "paymentProblem": "Проблема с оплатой", + "accountSettings": "Настройки аккаунта", + "hostingQuestion": "Вопрос по хостингу", + "other": "Другое", + "message": "Сообщение", + "describeYourIssueOrQuestion": "Опишите вашу проблему или вопрос", + "submitRequest": "Отправить запрос", + "communityForum": "Форум сообщества", + "forumDescription": "Общайтесь с другими пользователями, делитесь опытом и получайте советы от сообщества.", + "comingSoon": "Скоро будет!", + "forumComingSoonDescription": "Наш форум сообщества в разработке. Возвращайтесь позже, чтобы присоединиться к обсуждениям с другими пользователями Smart Rent!", + "howCanWeHelpYou": "Чем мы можем вам помочь?", + "findAnswersOrContactSupport": "Найдите ответы на свои вопросы или свяжитесь с нашей службой поддержки", + "frequentlyAskedQuestions": "Часто задаваемые вопросы", + "cantFindWhatYouAreLookingFor": "Не можете найти то, что ищете?", + "contactOurSupportTeam": "Свяжитесь с нашей службой поддержки", + "emailSupport": "Поддержка по электронной почте", + "emailSupportDescription": "Наша команда поддержки по электронной почте доступна 24/7 для помощи вам.", + "phoneSupport": "Телефонная поддержка", + "phoneSupportDescription": "Позвоните в нашу службу поддержки для немедленной помощи в рабочее время.", + "availableMondayToFriday": "Доступно с понедельника по пятницу, с 9:00 до 18:00 (EST)", + "liveChat": "Онлайн-чат", + "liveChatDescription": "Общайтесь с нашей службой поддержки в режиме реального времени для быстрой помощи.", + "startAChatSession": "Начать чат-сессию", + "available247": "Доступно 24/7" +} diff --git a/frontend/src/locales/ru/Home.json b/frontend/src/locales/ru/Home.json new file mode 100644 index 0000000..651fd87 --- /dev/null +++ b/frontend/src/locales/ru/Home.json @@ -0,0 +1,54 @@ +{ + "city-tours": "Городские туры", + "city-toursDesc": "Исследуйте с местными гидами", + "outdoor-adventures": "Приключения на природе", + "outdoor-adventuresDesc": "Исследуйте с местными гидами", + "local-cuisine": "Местная кухня", + "local-cuisineDesc": "Исследуйте с местными гидами", + "heroTitle": "Найдите жилье, которое ощущается <1>как дома", + "heroDescription": "Откройте для себя уникальные дома, апартаменты и впечатления по всему миру — отобранные для комфорта, стиля и незабываемых воспоминаний.", + "exploreStays": "Посмотреть жилье", + "becomeHost": "Стать хозяином", + + "inspirationTitle": "Вдохновение для вашего следующего путешествия", + "inspirationSubtitle": "Исследуйте лучшие направления с идеальными вариантами аренды", + + "newYork": "Нью-Йорк", + "newYorkProperties": "120 объектов", + "losAngeles": "Лос-Анджелес", + "losAngelesProperties": "94 объекта", + "miami": "Майами", + "miamiProperties": "85 объектов", + "chicago": "Чикаго", + "chicagoProperties": "73 объекта", + + "stayAnywhereTitle": "Остановитесь где угодно", + "stayAnywhereSubtitle": "Уникальное жилье на любой вкус и бюджет", + "apartments": "Апартаменты", + "apartmentsDesc": "Городской комфорт", + "houses": "Дома", + "housesDesc": "Целые дома", + "cabins": "Коттеджи", + "cabinsDesc": "Уютные уединения", + "villas": "Виллы", + "villasDesc": "Роскошные варианты", + + "discoverExperiencesTitle": "Откройте для себя впечатления", + "discoverExperiencesSubtitle": "Найдите занятия от местных экспертов", + "cityTours": "Городские туры", + "cityToursDesc": "Исследуйте с местными гидами", + "outdoorAdventures": "Приключения на природе", + "outdoorAdventuresDesc": "Исследуйте с местными гидами", + "localCuisine": "Местная кухня", + "localCuisineDesc": "Исследуйте с местными гидами", + + "becomeAHostTitle": "Стать хозяином", + "becomeAHostDesc": "Делитесь своим жильем, зарабатывайте дополнительный доход и знакомьтесь с гостями со всего мира.", + "learnMore": "Узнать больше", + "city-tours": "Городские туры", + "city-toursDesc": "Исследуйте с местными гидами", + "outdoor-adventures": "Приключения на природе", + "outdoor-adventuresDesc": "Исследуйте с местными гидами", + "local-cuisine": "Местная кухня", + "local-cuisineDesc": "Исследуйте с местными гидами" +} diff --git a/frontend/src/locales/ru/Login.json b/frontend/src/locales/ru/Login.json new file mode 100644 index 0000000..ddac175 --- /dev/null +++ b/frontend/src/locales/ru/Login.json @@ -0,0 +1,11 @@ +{ + "loginTitle": "Войдите в свой аккаунт", + "createAccount": "Или создайте новый аккаунт", + "email": "Электронная почта", + "password": "Пароль", + "rememberMe": "Запомнить меня", + "forgotPassword": "Забыли пароль?", + "login": "Войти", + "orContinueWith": "Или продолжить с помощью", + "signInWithGoogle": "Войти через Google" +} diff --git a/frontend/src/locales/ru/NotFound.json b/frontend/src/locales/ru/NotFound.json new file mode 100644 index 0000000..07ea3b6 --- /dev/null +++ b/frontend/src/locales/ru/NotFound.json @@ -0,0 +1,5 @@ +{ + "notFoundTitle": "Страница не найдена", + "notFoundMessage": "Извините, страница, которую вы ищете, не существует.", + "goHome": "На главную" +} diff --git a/frontend/src/locales/ru/Register.json b/frontend/src/locales/ru/Register.json new file mode 100644 index 0000000..078175d --- /dev/null +++ b/frontend/src/locales/ru/Register.json @@ -0,0 +1,17 @@ +{ + "signInToExistingLink": "войдите в свой существующий аккаунт", + "signUpWithGoogle": "Зарегистрироваться через Google", + "signUpWithFacebook": "Зарегистрироваться через Facebook", + "registerTitle": "Создайте свой аккаунт", + "signInToExisting": "Или войдите в свой существующий аккаунт", + "firstName": "Имя", + "lastName": "Фамилия", + "username": "Имя пользователя (необязательно)", + "usernameHint": "Будет использована часть вашей почты, если не заполнено", + "email": "Электронная почта", + "password": "Пароль", + "confirmPassword": "Подтвердите пароль", + "agreeTerms": "Я согласен с Условиями обслуживания и Политикой конфиденциальности", + "register": "Создать аккаунт", + "orContinueWith": "Или продолжить с помощью" +} diff --git a/frontend/src/locales/ru/ReportConcern.json b/frontend/src/locales/ru/ReportConcern.json new file mode 100644 index 0000000..1199048 --- /dev/null +++ b/frontend/src/locales/ru/ReportConcern.json @@ -0,0 +1,51 @@ +{ + "title": "Сообщить о проблеме", + "subtitle": "Ваша безопасность и удовлетворенность — наш приоритет. Сообщите нам о любых проблемах или беспокойствах.", + "thankYouTitle": "Спасибо за ваш отчет", + "thankYouMsg1": "Мы получили ваше сообщение и оперативно его рассмотрим. При необходимости наша команда свяжется с вами по электронной почте для получения дополнительной информации.", + "thankYouMsg2": "Номер обращения:", + "returnHome": "Вернуться на главную", + "visitHelp": "Посетить центр помощи", + "howToTitle": "Как сообщить о проблеме", + "howToDesc": "Мы серьезно относимся ко всем сообщениям и тщательно их расследуем. Пожалуйста, предоставьте как можно больше подробностей, чтобы мы могли эффективно рассмотреть вашу проблему.", + "emergency": "В экстренных случаях:", + "emergencyDesc": "Если вы оказались в экстренной ситуации, немедленно обратитесь в местные службы экстренной помощи, позвонив по местному номеру.", + "submitTitle": "Отправить сообщение", + "concernTypeLabel": "Тип проблемы *", + "concernTypePlaceholder": "Выберите тип проблемы", + "concernTypes": [ + "Проблема с безопасностью", + "Возможное мошенничество", + "Мошенничество или вводящее в заблуждение объявление", + "Дискриминация", + "Повреждение имущества", + "Проблема с доступностью", + "Безопасность аккаунта", + "Другая проблема" + ], + "listingIdLabel": "ID объявления/бронирования (если применимо)", + "listingIdPlaceholder": "например, LIST12345 или RES67890", + "listingIdHelp": "Это поможет нам определить конкретное объявление или бронирование, к которому относится ваша проблема.", + "descriptionLabel": "Описание проблемы *", + "descriptionPlaceholder": "Пожалуйста, опишите вашу проблему как можно подробнее...", + "attachmentsLabel": "Вложения (необязательно)", + "attachmentsUpload": "Загрузить файлы", + "attachmentsOr": "или перетащите файлы", + "attachmentsHelp": "PNG, JPG, PDF до 10 МБ", + "contactTitle": "Ваша контактная информация", + "nameLabel": "Имя *", + "emailLabel": "Электронная почта *", + "phoneLabel": "Телефон (необязательно)", + "privacyNotice": "Я понимаю, что моя информация будет обработана, как указано в <1>Политике конфиденциальности", + "submitBtn": "Отправить сообщение", + "safetyInfoTitle": "Информация о безопасности", + "safetyInfoDesc": "Узнайте о наших правилах и протоколах безопасности для гостей и хозяев.", + "helpCenterTitle": "Центр помощи", + "helpCenterDesc": "Просмотрите часто задаваемые вопросы и справочные материалы.", + "contactSupportTitle": "Связаться с поддержкой", + "contactSupportDesc": "Свяжитесь с нашей службой поддержки клиентов.", + "emergencyLineTitle": "Экстренная линия", + "emergencyLineDesc": "Позвоните на нашу экстренную линию для срочных вопросов.", + "additionalResources": "Дополнительные ресурсы" + ,"attachmentsUploadNoFile": "Файл не выбран" +} \ No newline at end of file diff --git a/frontend/src/locales/ru/Safety.json b/frontend/src/locales/ru/Safety.json new file mode 100644 index 0000000..a30a93b --- /dev/null +++ b/frontend/src/locales/ru/Safety.json @@ -0,0 +1,48 @@ +{ + "headerTitle": "Ваша безопасность важна", + "headerSubtitle": "Smart Rent System стремится создать безопасную среду для наших хозяев и гостей", + "commitmentTitle": "Наша приверженность безопасности", + "commitmentDesc1": "В Smart Rent System мы ставим безопасность и благополучие нашего сообщества на первое место. Мы внедрили комплексные меры безопасности, процессы проверки и системы поддержки, чтобы хозяева и гости могли пользоваться нашей платформой с уверенностью и спокойствием.", + "commitmentDesc2": "На этой странице представлена информация о наших мерах безопасности, экстренных ресурсах и рекомендациях для вашей безопасности при использовании наших услуг.", + "featuresTitle": "Ключевые функции безопасности", + "featureVerifiedTitle": "Проверенные профили", + "featureVerifiedDesc": "Все пользователи проходят проверку личности перед бронированием или размещением. Это помогает убедиться, что члены нашего сообщества действительно те, за кого себя выдают.", + "featurePropertyTitle": "Стандарты недвижимости", + "featurePropertyDesc": "Объекты, размещенные на нашей платформе, должны соответствовать основным требованиям безопасности, включая работающие датчики дыма и угарного газа.", + "featureSupportTitle": "Круглосуточная поддержка", + "featureSupportDesc": "Наша служба поддержки клиентов доступна круглосуточно для решения любых вопросов или экстренных ситуаций, связанных с безопасностью.", + "tipsTitle": "Советы по безопасности", + "tipsGuestsTitle": "Для гостей", + "tipsGuests1": "Внимательно изучайте детали объекта, включая особенности безопасности и правила проживания.", + "tipsGuests2": "Читайте отзывы предыдущих гостей, чтобы узнать больше об объекте и хозяине.", + "tipsGuests3": "Для вашей защиты общайтесь только через платформу Smart Rent System.", + "tipsGuests4": "По прибытии ознакомьтесь с аварийными выходами и средствами безопасности.", + "tipsGuests5": "Поделитесь своим маршрутом с доверенным другом или членом семьи.", + "tipsHostsTitle": "Для хозяев", + "tipsHosts1": "Установите и поддерживайте дымовые и угарные датчики, а также огнетушители.", + "tipsHosts2": "Предоставьте четкие инструкции по заселению и контактную информацию для экстренных случаев.", + "tipsHosts3": "Убедитесь, что на всех дверях и окнах, включая спальни, есть надежные замки.", + "tipsHosts4": "Создайте и разместите аварийное руководство с местными медицинскими учреждениями и экстренными номерами.", + "tipsHosts5": "Проверяйте гостей, изучая их профили и переписку перед подтверждением бронирования.", + "covidTitle": "Меры безопасности COVID-19", + "covidDesc": "Хотя во многих регионах ограничения COVID-19 были ослаблены, мы продолжаем поощрять меры безопасности, которые помогают защитить наше сообщество:", + "covidCleaningTitle": "Усиленный протокол уборки", + "covidCleaningDesc": "Мы рекомендуем хозяевам соблюдать усиленные процедуры уборки между гостями, включая дезинфекцию часто используемых поверхностей и предоставление антисептика для рук по возможности.", + "covidFlexibleTitle": "Гибкие варианты бронирования", + "covidFlexibleDesc": "Многие объекты предлагают гибкие условия отмены, чтобы учесть неожиданные изменения в планах поездок по состоянию здоровья.", + "emergencyTitle": "Экстренные ресурсы", + "emergencyImmediateTitle": "Немедленная экстренная ситуация", + "emergencyImmediateDesc": "В случае угрозы жизни немедленно обратитесь в местные экстренные службы:", + "emergencyNumber": "112", + "emergencyNumberNote": "(или соответствующий экстренный номер для вашего региона)", + "emergencySupportTitle": "Срочная поддержка Smart Rent System", + "emergencySupportDesc": "Для срочных ситуаций, не угрожающих жизни, но требующих немедленной помощи:", + "emergencySupportLineLabel": "Срочная линия поддержки", + "emergencySupportLine": "+7 495 123-45-67", + "emergencySupportEmailLabel": "Электронная почта безопасности", + "emergencySupportEmail": "safety@smartrent.com", + "reportTitle": "Сообщить о проблемах безопасности", + "reportDesc": "Если вы столкнулись с проблемой безопасности или у вас есть опасения по поводу бронирования или объекта, сообщите нам об этом немедленно. Ваши сообщения помогают нам поддерживать безопасную платформу для всех.", + "reportContactSupport": "Связаться с поддержкой", + "reportVisitHelpCenter": "Посетить центр помощи" +} diff --git a/frontend/src/locales/ru/Terms.json b/frontend/src/locales/ru/Terms.json new file mode 100644 index 0000000..6f05fd7 --- /dev/null +++ b/frontend/src/locales/ru/Terms.json @@ -0,0 +1,75 @@ +{ + "termsTitle": "Условия использования", + "termsSubtitle": "Правила и инструкции по использованию Smart Rent System", + "lastUpdated": "Последнее обновление: 15 ноября 2023 г.", + "welcome": "Добро пожаловать в Smart Rent System. Эти Условия использования регулируют ваш доступ к веб-сайту, приложениям и сервисам Smart Rent System, а также их использование. Получая доступ к нашему сервису или используя его, вы соглашаетесь с этими условиями.", + "acceptanceTitle": "1. Принятие условий", + "acceptance": "Регистрируясь и/или используя Сервис любым способом, вы соглашаетесь с этими Условиями и всеми другими правилами, политиками и процедурами, опубликованными Smart Rent System. Эти Условия применяются ко всем пользователям Сервиса, включая хозяев, гостей и обычных посетителей.", + "accountTitle": "2. Регистрация аккаунта", + "account": "Для доступа к определённым функциям Сервиса необходимо зарегистрировать аккаунт. Регистрируясь, вы соглашаетесь:", + "accountList": [ + "Предоставлять точную, актуальную и полную информацию", + "Своевременно поддерживать и обновлять информацию аккаунта", + "Обеспечивать безопасность аккаунта и пароля", + "Принимать все риски несанкционированного доступа к вашему аккаунту", + "Немедленно уведомлять нас о любом несанкционированном использовании аккаунта" + ], + "accountNote": "Мы оставляем за собой право отказать в обслуживании, удалить аккаунты или удалить контент по собственному усмотрению.", + "contentTitle": "3. Контент и поведение", + "content": "Наш Сервис позволяет публиковать, связывать, хранить, делиться и предоставлять определённую информацию, текст, графику, видео или другие материалы. Вы несёте ответственность за публикуемый вами контент и последствия его распространения. Публикуя контент, вы заявляете, что обладаете необходимыми правами на этот контент.", + "contentList": [ + "Не публикуйте незаконный, вредоносный, угрожающий, оскорбительный или дискриминационный контент", + "Не выдавайте себя за другое лицо или организацию", + "Не искажайте свою принадлежность к какому-либо лицу или организации", + "Не публикуйте личную или конфиденциальную информацию других лиц без разрешения", + "Не совершайте действий, ограничивающих или препятствующих использованию Сервиса другими лицами", + "Не используйте Сервис для незаконных целей или с нарушением закона", + "Не загружайте вирусы или другой вредоносный код", + "Не пытайтесь обойти какие-либо функции безопасности Сервиса" + ], + "bookingTitle": "4. Бронирования и аренда", + "bookingGuest": "Как гость, совершая бронирование, вы соглашаетесь:", + "bookingGuestList": [ + "Оплачивать все сборы, применимые налоги и другие расходы, связанные с бронированием", + "Быть ответственным за своё поведение во время пребывания", + "Соблюдать правила дома и процедуры выезда, установленные хозяином", + "Оставлять имущество в том же состоянии, в котором вы его нашли", + "Немедленно сообщать о любых повреждениях или проблемах" + ], + "bookingHost": "Как хозяин, размещая свою недвижимость, вы соглашаетесь:", + "bookingHostList": [ + "Предоставлять точную и полную информацию о своём объекте", + "Поддерживать свою недвижимость в безопасном и чистом состоянии", + "Оперативно отвечать на запросы на бронирование", + "Выполнять подтверждённые бронирования", + "Соблюдать все применимые законы, включая налоги, зонирование и правила безопасности" + ], + "cancellationTitle": "5. Отмена и возвраты", + "cancellation": "Отмена и возвраты осуществляются в соответствии с конкретной политикой отмены, выбранной хозяином для его объявления. Эта политика отображается в каждом объявлении до бронирования. Завершая бронирование, гости признают и соглашаются с политикой отмены хозяина.", + "cancellationMore": "Для получения дополнительной информации ознакомьтесь с нашей <1>Политикой отмены.", + "feesTitle": "6. Сборы и платежи", + "fees": "Smart Rent System взимает сервисные сборы как с гостей, так и с хозяев за использование платформы. Эти сборы рассчитываются как процент от промежуточной суммы бронирования и чётко отображаются перед оплатой. Используя наш Сервис, вы соглашаетесь оплачивать все применимые сборы. Все платежи обрабатываются безопасно через нашу платформу.", + "disclaimerTitle": "7. Отказ от ответственности и ограничение ответственности", + "disclaimer": "Сервис предоставляется \"как есть\" и \"по мере доступности\". Smart Rent System прямо отказывается от всех видов гарантий, явных или подразумеваемых, включая, помимо прочего, подразумеваемые гарантии товарной пригодности, пригодности для определённой цели и ненарушения прав.", + "liability": "Ни при каких обстоятельствах Smart Rent System не несёт ответственности за любые косвенные, случайные, особые, последующие или штрафные убытки, включая, помимо прочего, упущенную выгоду, данные, использование, деловую репутацию или другие нематериальные потери, возникшие в результате вашего доступа к Сервису, его использования или невозможности доступа или использования Сервиса.", + "indemnificationTitle": "8. Возмещение ущерба", + "indemnification": "Вы соглашаетесь защищать, возмещать убытки и ограждать Smart Rent System, его должностных лиц, директоров, сотрудников и агентов от любых претензий, обязательств, убытков, потерь и расходов, включая разумные гонорары адвокатов, возникающих из-за или связанных с вашим доступом или использованием Сервиса, нарушением вами настоящих Условий или нарушением вами прав других лиц.", + "modificationsTitle": "9. Изменения условий", + "modifications": "Мы оставляем за собой право изменять эти Условия в любое время. В случае внесения изменений мы уведомим об этом, опубликовав обновлённые Условия на нашем сайте и обновив дату \"Последнее обновление\". Ваше дальнейшее использование Сервиса после такого уведомления означает ваше согласие с новыми Условиями.", + "lawTitle": "10. Применимое право", + "law": "Настоящие Условия регулируются и толкуются в соответствии с законодательством [юрисдикции] без учёта его коллизионных норм. Вы соглашаетесь подчиняться личной и исключительной юрисдикции судов, расположенных в [юрисдикции].", + "contactTitle": "11. Контактная информация", + "contact": "Если у вас есть вопросы по этим Условиям, свяжитесь с нами по адресу:", + "email": "Электронная почта: legal@smartrentsystem.com", + "address": "Почтовый адрес: 123 Rent Street, Город, Страна", + "phone": "Телефон: +1 (123) 456-7890", + "privacy": "Политика конфиденциальности", + "privacyDesc": "Узнайте, как мы собираем, используем и защищаем вашу информацию.", + "readPrivacy": "Прочитать политику конфиденциальности", + "cookie": "Политика использования файлов cookie", + "cookieDesc": "Узнайте, как мы используем файлы cookie и аналогичные технологии на нашем сайте.", + "readCookie": "Прочитать политику использования файлов cookie", + "help": "Справочный центр", + "helpDesc": "Найдите ответы на часто задаваемые вопросы о наших условиях и политиках.", + "visitHelp": "Посетить справочный центр" +} diff --git a/frontend/src/locales/ru/footer.json b/frontend/src/locales/ru/footer.json new file mode 100644 index 0000000..7b4cc0e --- /dev/null +++ b/frontend/src/locales/ru/footer.json @@ -0,0 +1,27 @@ +{ + "companyDescription": "Найдите идеальный дом вдали от дома. SmartRent предоставляет безопасную платформу для аренды недвижимости с проверенными хозяевами и качественными объявлениями.", + "quickLinks": "Быстрые ссылки", + "home": "Главная", + "aboutUs": "О нас", + "contact": "Контакт", + "blog": "Блог", + "support": "Поддержка", + "help": "Помощь", + "safetyInformation": "Информация о безопасности", + "cancellationOptions": "Варианты отмены", + "reportConcern": "Сообщить о проблеме", + "faq": "Часто задаваемые вопросы", + "contactUs": "Связаться с нами", + "address": "123 Арендная улица, Город, Страна", + "subscribeNewsletter": "Подписаться на рассылку", + "yourEmail": "Ваш email", + "subscribing": "Подписка...", + "subscribeSuccess": "Спасибо за подписку!", + "subscribeError": "Пожалуйста, введите действительный адрес электронной почты.", + "privacyPolicy": "Политика конфиденциальности", + "termsOfService": "Условия обслуживания", + "cookiePolicy": "Политика использования файлов cookie", + "phone": "+7 123 456-78-90", + "email": "info@smartrentsystem.com", + "allRightsReserved": "Все права защищены." +} diff --git a/frontend/src/locales/ru/navbar.json b/frontend/src/locales/ru/navbar.json new file mode 100644 index 0000000..8cc21ca --- /dev/null +++ b/frontend/src/locales/ru/navbar.json @@ -0,0 +1,19 @@ +{ + "search": "Поиск", + "login": "Войти", + "signup": "Зарегистрироваться", + "logout": "Выйти", + "profile": "Профиль", + "help": "Помощь", + "becomeHost": "Стать хозяином", + "messages": "Сообщения", + "trips": "Поездки", + "wishlist": "Список желаний", + "account": "Аккаунт", + "settings": "Настройки", + "popularSuggestions": ["Москва", "Санкт-Петербург", "Казань", "Сочи", "Екатеринбург"], + "recentSearches": "Недавние поиски", + "clear": "Очистить", + "popularDestinations": "Популярные направления", + "explore": "Исследовать" +} diff --git a/frontend/src/locales/zh/About.json b/frontend/src/locales/zh/About.json new file mode 100644 index 0000000..1cf9bf5 --- /dev/null +++ b/frontend/src/locales/zh/About.json @@ -0,0 +1,47 @@ +{ + "aboutTitle": "关于Smart Rent System", + "aboutSubtitle": "让房产租赁变得简单、安全、愉快,适合每个人。", + "missionTitle": "我们的使命", + "missionText": "Smart Rent System成立于2020年,使命是让房产租赁变得人人可及、安全且愉快。我们注意到传统的租赁流程往往复杂、耗时且缺乏透明度。", + "visionTitle": "我们的愿景", + "visionText": "我们致力于打造一个平台,无缝连接房东和潜在租客,提供让整个流程——从发布到预订再到入住——尽可能顺畅的工具。如今,Smart Rent System在全球拥有数千套房源,帮助旅行者找到理想的临时住所,同时让房东以最少的麻烦实现租赁收益最大化。", + "ourValuesTitle": "我们的价值观", + "trustSafetyTitle": "信任与安全", + "trustSafetyDesc": "我们致力于为房东和房客创造一个安全的环境,拥有透明的政策和安全的交易。", + "globalCommunityTitle": "全球社区", + "globalCommunityDesc": "我们庆祝多样性,致力于连接来自不同背景和文化的人们。", + "innovationTitle": "创新", + "innovationDesc": "我们不断改进平台和服务,为所有用户提供最佳体验。", + "teamTitle": "认识我们的团队", + "teamText": "我们的团队致力于确保每位用户都能获得卓越的支持,并在Smart Rent System拥有积极的体验。", + "joinOurCommunity": "加入我们的社区", + "joinOurCommunityDesc": "无论您是在寻找住宿,还是希望与旅行者分享您的房产,Smart Rent System都能为您提供帮助。", + "exploreProperties": "浏览房源", + "becomeHost": "成为房东", + "teamMembers": [ + { + "name": "简·史密斯", + "role": "首席执行官兼创始人", + "image": "https://randomuser.me/api/portraits/women/32.jpg", + "bio": "简创立了Smart Rent System,旨在改变人们在全球范围内寻找和预订住宿的方式。" + }, + { + "name": "迈克尔·约翰逊", + "role": "首席技术官", + "image": "https://randomuser.me/api/portraits/men/42.jpg", + "bio": "迈克尔领导我们的技术团队,确保我们的平台对房东和房客都安全、快速且用户友好。" + }, + { + "name": "莎拉·陈", + "role": "运营主管", + "image": "https://randomuser.me/api/portraits/women/22.jpg", + "bio": "莎拉负责我们的日常运营,确保房东和房客在我们的平台上都能获得顺畅的体验。" + }, + { + "name": "詹姆斯·威尔逊", + "role": "客户体验主管", + "image": "https://randomuser.me/api/portraits/men/32.jpg", + "bio": "詹姆斯致力于确保每位用户都能获得卓越的支持,并在Smart Rent System拥有积极的体验。" + } + ] +} diff --git a/frontend/src/locales/zh/Account.json b/frontend/src/locales/zh/Account.json new file mode 100644 index 0000000..6262159 --- /dev/null +++ b/frontend/src/locales/zh/Account.json @@ -0,0 +1,35 @@ +{ + "accountSettings": "账户设置", + "profile": "个人资料", + "payment": "支付方式", + "security": "安全", + "notifications": "通知", + "privacy": "隐私", + "mustBeLoggedIn": "您必须登录才能查看此页面", + "goToLogin": "前往登录", + "logOut": "退出登录", + "profileInformation": "个人信息", + "firstName": "名", + "lastName": "姓", + "email": "电子邮件", + "phone": "电话", + "dateOfBirth": "出生日期", + "street": "街道", + "city": "城市", + "state": "省/州", + "zipCode": "邮政编码", + "country": "国家", + "saveChanges": "保存更改", + "profileUpdated": "个人资料更新成功!", + "profileUpdateFailed": "个人资料更新失败: {{error}}", + "profileUpdateError": "更新个人资料时发生错误", + "removeProfileImageConfirm": "确定要删除您的个人头像吗?", + "removeProfileImageError": "删除个人头像出错: {{error}}", + "removeProfileImageGenericError": "删除个人头像时发生错误", + "uploadProfileImageError": "上传个人头像失败: {{error}}", + "uploadProfileImageGenericError": "上传个人头像时发生错误", + "areYouSureRemovePayment": "确定要删除此支付方式吗?", + "default": "默认", + "setDefault": "设为默认", + "remove": "移除" +} diff --git a/frontend/src/locales/zh/BecomeHost.json b/frontend/src/locales/zh/BecomeHost.json new file mode 100644 index 0000000..ae28794 --- /dev/null +++ b/frontend/src/locales/zh/BecomeHost.json @@ -0,0 +1,71 @@ +{ + "becomeAHost": "成为房东", + "step1Title": "房产类型", + "step2Title": "位置", + "step3Title": "设施", + "step4Title": "照片", + "step5Title": "详情与价格", + "propertyType": "房产类型", + "propertyCategory": "房产类别", + "selectPropertyType": "选择房产类型", + "selectPropertyCategory": "选择房产类别", + "address": "地址", + "city": "城市", + "state": "州/省", + "zipCode": "邮编", + "country": "国家", + "amenities": "设施", + "selectAmenities": "选择设施", + "photos": "照片", + "uploadPhotos": "上传照片", + "title": "标题", + "description": "描述", + "price": "每晚价格", + "guests": "客人", + "bedrooms": "卧室", + "beds": "床位", + "bathrooms": "浴室", + "continue": "继续", + "back": "返回", + "publishListing": "发布房源", + "cancel": "取消", + "termsOfService": "服务条款", + "hostPolicies": "房东政策", + "agreeToTerms": "成为房东即表示您同意我们的{termsOfService}和{hostPolicies}。", + "uploading": "正在上传...", + "remove": "移除", + "selectCurrency": "选择货币", + "selectLanguage": "选择语言" +} + + "house": "房子", + "apartment": "公寓", + "guesthouse": "民宿", + "hotel": "酒店", + "cabin": "小屋", + "villa": "别墅", + "beach": "海滩", + "mountain": "山", + "city": "城市", + "countryside": "乡村", + "lake": "湖泊", + "desert": "沙漠", + "wifi": "无线网络", + "kitchen": "厨房", + "washer": "洗衣机", + "dryer": "烘干机", + "ac": "空调", + "heating": "暖气", + "tv": "电视", + "parking": "免费停车", + "pool": "游泳池", + "hottub": "热水浴缸", + "gym": "健身房", + "pets": "允许携带宠物", + "usd": "美元", + "eur": "欧元", + "gbp": "英镑", + "jpy": "日元", + "cad": "加元", + "aud": "澳元", + "inr": "印度卢比" diff --git a/frontend/src/locales/zh/Blog.json b/frontend/src/locales/zh/Blog.json new file mode 100644 index 0000000..4d5380d --- /dev/null +++ b/frontend/src/locales/zh/Blog.json @@ -0,0 +1,18 @@ +{ + "blogTitle": "Smart Rent 博客", + "blogSubtitle": "旅行贴士、目的地指南和见解,助您充分利用每一次旅程", + "featuredArticles": "精选文章", + "allPosts": "所有文章", + "tips": "旅行贴士", + "destinations": "目的地", + "hosting": "房东贴士", + "news": "公司新闻", + "noPostsFound": "未找到文章", + "noPostsAvailable": "该分类下暂无文章。", + "viewAllPosts": "查看所有文章", + "subscribeNewsletter": "订阅我们的新闻通讯", + "newsletterDesc": "获取最新旅行贴士、目的地指南和 Smart Rent 新闻,直达您的收件箱。", + "yourEmail": "您的电子邮箱", + "subscribe": "订阅", + "privacyConsent": "订阅即表示您同意我们的隐私政策,并同意接收我们公司的最新资讯。" +} diff --git a/frontend/src/locales/zh/Cancellation.json b/frontend/src/locales/zh/Cancellation.json new file mode 100644 index 0000000..9db6a69 --- /dev/null +++ b/frontend/src/locales/zh/Cancellation.json @@ -0,0 +1,62 @@ +{ + "cancellationTitle": "取消政策", + "cancellationSubtitle": "为您的预订提供安心的透明和灵活选项", + "understandingPolicies": "了解我们的政策", + "intro1": "在 Smart Rent System,我们理解计划可能会改变。我们的取消政策旨在为客人和房东提供清晰和灵活性。", + "intro2": "我们平台上的每个房源都采用以下列出的取消政策之一。每个房源的具体政策会在预订前在房源页面上明确显示。", + "forGuests": "针对客人", + "forHosts": "针对房东", + "guestIntro": "预订房源时,请查看其取消政策,以了解如需取消时的退款选项。以下是每项政策对客人的意义:", + "hostIntro": "作为房东,您可以选择最适合您房源和业务需求的取消政策。选择政策时请考虑以下几点:", + "flexible": "灵活", + "moderate": "适中", + "strict": "严格", + "nonrefundable": "不可退款", + "flexibleDesc": "在入住前至少24小时取消可全额退款", + "moderateDesc": "在入住前至少5天取消可全额退款", + "strictDesc": "在入住前至少14天取消可全额退款", + "nonrefundableDesc": "无退款的特价优惠", + "fullRefund": "全额退款", + "partialRefund": "部分退款", + "noRefund": "不退款", + "discountedRate": "折扣价", + "travelInsurance": "旅游保险", + "flexibleFull": "在入住前至少24小时取消(当地时间下午2点前)", + "flexiblePartial": "在入住前不足24小时取消,首晚不退款,其余晚数退还50%", + "flexibleNone": "如客人提前离开,未住宿的晚数不予退款", + "moderateFull": "在入住前至少5天取消(当地时间下午2点前)", + "moderatePartial": "在入住前不足5天取消,首晚不退款,其余晚数退还50%", + "moderateNone": "如客人提前离开,未住宿的晚数不予退款", + "strictFull": "在入住前至少14天取消(当地时间下午2点前)", + "strictPartial": "在入住前7-14天取消,退还总费用的50%", + "strictNone": "在入住前不足7天取消或未入住,均不退款", + "nonrefundableDiscount": "客人可享受房源标准价9-15%的折扣", + "nonrefundableNone": "无论何时取消,均不退款", + "nonrefundableInsurance": "选择此选项时强烈建议客人购买旅游保险", + "hostTipFlexible": "此政策适合吸引犹豫不决的客人。适用于临时预订和竞争激烈的地区。", + "hostTipModerate": "此平衡政策为客人和房东提供良好的灵活性与保障。适用于大多数房源类型。", + "hostTipStrict": "此政策为高需求地区或旺季期间的房东提供更多保障,因取消日期可能难以重新预订。", + "hostTipNonrefundable": "此选项可让您在确保付款安全的同时提供折扣价。适合高需求房源或旺季。", + "extenuatingCircumstances": "特殊情况政策", + "extenuatingDesc1": "在极少数情况下,我们可能会推翻房源的标准取消政策并发放部分或全部退款。这些例外适用于以下不可预见的情况:", + "extenuatingList1": "在入住前或入住期间发生", + "extenuatingList2": "导致无法或不安全完成住宿", + "extenuatingList3": "预订时无法预见", + "extenuatingDesc2": "例如自然灾害、政府宣布的紧急情况、严重疾病或受伤,或导致无法到达目的地的交通中断。", + "extenuatingDesc3": "申请特殊情况退款时可能需要提供相关证明。", + "faqsTitle": "常见问题", + "needHelp": "需要更多帮助?", + "needHelpDesc": "如果您对特定预订有疑问或需要取消协助,我们的支持团队随时为您服务。", + "contactSupport": "联系客服", + "visitHelp": "访问帮助中心", + "faq1Q": "如果我取消预订会发生什么?", + "faq1A": "如果您取消预订,退款将取决于房源的取消政策。请在您的预订或房源页面查看政策详情。", + "faq2Q": "我如何申请取消?", + "faq2A": "要申请取消,请前往“行程”页面,选择预订并点击“取消”。按照提示完成您的申请。", + "faq3Q": "我什么时候能收到退款?", + "faq3A": "退款通常会在取消后5-10个工作日内处理,具体取决于您的支付提供商。", + "faq4Q": "我可以更改预订日期而不是取消吗?", + "faq4A": "可以,您可以在“行程”页面申请更改预订日期。批准取决于房东的可用性。", + "faq5Q": "如果我因紧急情况需要取消怎么办?", + "faq5A": "如果您因紧急情况或不可抗力需要取消,请联系我们的支持团队。我们可能会提供额外的灵活性。" +} diff --git a/frontend/src/locales/zh/Contact.json b/frontend/src/locales/zh/Contact.json new file mode 100644 index 0000000..00ffa2b --- /dev/null +++ b/frontend/src/locales/zh/Contact.json @@ -0,0 +1,20 @@ +{ + "contactTitle": "联系我们", + "contactSubtitle": "我们随时为您提供帮助。欢迎随时联系我们。", + "phoneLabel": "电话", + "phoneValue": "+1 (800) 123-4567", + "officeHoursLabel": "办公时间", + "officeHoursValue": "周一至周五, 上午9点至下午6点", + "emailContactLabel": "电子邮件", + "emailContactValue": "support@smartrent.com", + "successMessage": "您的消息已成功发送!", + "addressLabel": "地址", + "addressValue": "123 Smart Rent Street\n旧金山, CA 94103", + "connectWithUs": "联系我们", + "formIntro": "请填写下方表格,我们会尽快与您联系。", + "nameLabel": "姓名", + "emailLabel": "电子邮件", + "subjectLabel": "主题", + "messageLabel": "消息", + "submitButton": "发送消息" +} diff --git a/frontend/src/locales/zh/ErrorBoundary.json b/frontend/src/locales/zh/ErrorBoundary.json new file mode 100644 index 0000000..37d3eab --- /dev/null +++ b/frontend/src/locales/zh/ErrorBoundary.json @@ -0,0 +1,5 @@ +{ + "errorTitle": "出现了问题。", + "errorMessage": "发生了意外错误。请尝试刷新页面或联系支持人员。", + "refresh": "刷新" +} diff --git a/frontend/src/locales/zh/FAQ.json b/frontend/src/locales/zh/FAQ.json new file mode 100644 index 0000000..0cf3007 --- /dev/null +++ b/frontend/src/locales/zh/FAQ.json @@ -0,0 +1,79 @@ +{ + "faqTitle": "常见问题", + "faqSubtitle": "查找有关使用Smart Rent System的最常见问题的答案。", + "categoriesLabel": "类别", + "categories": { + "general": "常见问题", + "booking": "预订与预约", + "payment": "支付与退款", + "host": "房东问题", + "safety": "安全与保障", + "account": "账户管理" + }, + "needMoreHelp": "需要更多帮助?", + "needMoreHelpDesc": "如果您找不到所需内容,我们的支持团队随时为您服务。", + "contactSupport": "联系支持", + "helpCenter": "帮助中心", + "helpCenterDesc": "浏览Smart Rent的综合帮助指南、教程和故障排除技巧。", + "visitHelpCenter": "访问帮助中心", + "safetyInfo": "安全信息", + "safetyInfoDesc": "了解我们的安全协议、客人和房东的指南以及紧急资源。", + "viewSafetyGuidelines": "查看安全指南", + "reportConcernTitle": "报告问题", + "reportConcernDesc": "需要报告有关房源或用户的安全问题、政策违规或其他问题?", + "submitReport": "提交报告", + "general": { + "what-is-smart-rent": { + "question": "Smart Rent System是什么?", + "answer": "Smart Rent System是一个连接全球旅行者与独特住宿的平台。我们的平台允许房东发布房源,客人预订这些空间。我们提供安全的支付处理、验证的评价和客户支持,确保每个人都能顺利体验。" + }, + "how-to-start": { + "question": "如何开始使用Smart Rent?", + "answer": "开始很简单!只需创建一个账户,填写个人信息,即可开始搜索房源或发布自己的空间。按位置、价格、设施等浏览房源,找到下次旅行的理想住所。" + }, + "contact-support": { + "question": "如何联系客户支持?", + "answer": "您可以通过多种渠道联系我们的客户支持团队。使用网站上的联系页面,发送邮件至support@smartrentsystem.com,或拨打+1 (800) SMART-RENT。我们的团队全天候为您服务。" + }, + "app-available": { + "question": "有移动应用吗?", + "answer": "有!Smart Rent System应用适用于iOS和Android。可在App Store或Google Play Store下载,随时管理预订、消息和浏览房源。" + } + }, + "booking": { + "how-to-book": { + "question": "如何预订房源?", + "answer": "要预订房源,请按所需位置和日期搜索住宿。找到喜欢的房源后,点击“预订”或“立即预订”,并完成结账流程。有些房源可即时预订,其他则需房东批准。" + }, + "booking-confirmation": { + "question": "如何确认我的预订?", + "answer": "完成预订流程后,您会收到包含所有细节的确认邮件。也可在账户“行程”部分查看预订状态。" + }, + "cancel-booking": { + "question": "如何取消预订?", + "answer": "要取消预订,请进入账户“行程”部分,找到要取消的预订,点击“取消”选项。退款金额取决于房源的取消政策。" + }, + "modify-dates": { + "question": "可以更改预订日期吗?", + "answer": "可以,您可申请更改预订日期。进入“行程”页面,选择要更改的预订,点击“修改预订”。需房东批准和有空房。新日期可能会调整价格。" + } + }, + "payment": { + "payment-methods": { + "question": "接受哪些支付方式?", + "answer": "我们接受主流信用卡和借记卡(Visa、MasterCard、American Express、Discover)、PayPal,以及部分地区的Apple Pay和Google Pay。所有支付均通过平台安全处理。" + }, + "payment-timing": { + "question": "预订时何时扣费?", + "answer": "大多数预订在房东接受预订或使用即时预订时全额扣费。部分长期或提前预订可分期付款。" + }, + "security-deposit": { + "question": "什么是押金,何时退还?", + "answer": "押金用于覆盖住宿期间的潜在损坏。除非房东提出索赔,否则不会扣费。无索赔时,退房后14天自动解除支付方式上的冻结。" + }, + "refund-process": { + "question": "退款处理需要多久?", + "answer": "退款发起后,通常5-10个工作日到账。具体时间取决于支付服务商和金融机构。" + } + } +} \ No newline at end of file diff --git a/frontend/src/locales/zh/Help.json b/frontend/src/locales/zh/Help.json new file mode 100644 index 0000000..2d85074 --- /dev/null +++ b/frontend/src/locales/zh/Help.json @@ -0,0 +1,84 @@ +{ + "helpTitle": "帮助中心", + "helpSubtitle": "我们如何帮助您?", + "searchPlaceholder": "搜索帮助主题...", + "contactSupport": "联系客服", + "faq": "常见问题", + "noResults": "未找到帮助文章。", + "backToHome": "返回首页", + "howCanWeHelp": "我们如何帮助您?", + "findAnswers": "查找您的问题答案或联系我们的支持团队", + "searchForAnswers": "搜索答案...", + "helpGuidesTitle": "帮助指南", + "helpGuidesDesc": "关于如何使用 Smart Rent 功能的详细指南", + "viewGuides": "查看指南", + "safetyInfo": "安全信息", + "cancellationPolicies": "取消政策", + "reportConcern": "报告问题", + "contactSupportDesc": "联系我们的客户支持团队", + "contactUs": "联系我们", + "communityForum": "社区论坛", + "communityForumDesc": "与其他用户联系并分享您的经验", + "joinDiscussion": "加入讨论", + "faq": "常见问题", + "categoryGeneral": "常规", + "categoryAccount": "账户与资料", + "categoryBooking": "预订与预约", + "categoryPayment": "支付与退款", + "categoryHosting": "房东", + "categorySafety": "安全与无障碍", + "generalFaqs": "常见问题解答", + "whatIsSmartRent": "什么是 Smart Rent?", + "howToUseSmartRent": "如何使用 Smart Rent?", + "howToContactService": "如何联系客户服务?", + "cantFind": "找不到您要找的内容?", + "contactOurSupport": "联系我们的支持团队", + "emailSupport": "邮件支持", + "emailSupportDesc": "我们的邮件支持团队全天候为您服务。", + "phoneSupport": "电话支持", + "phoneSupportDesc": "在工作时间致电我们的客户服务团队以获得即时帮助。", + "phoneSupportHours": "周一至周五,上午9点至下午6点(EST)", + "liveChat": "在线聊天", + "liveChatDesc": "与我们的支持团队实时聊天,快速获得帮助。", + "startChat": "开始聊天会话", + "available247": "全天候提供服务", + "helpGuides": "帮助指南", + "helpGuidesDescription": "关于如何使用 Smart Rent 功能和服务的详细指南。", + "safetyInformation": "安全信息", + "cancellationPolicies": "取消政策", + "reportAConcern": "报告问题", + "contactSupport": "联系客服", + "contactSupportDescription": "我们的支持团队随时为您解答任何问题。", + "yourName": "您的姓名", + "enterYourName": "请输入您的姓名", + "emailAddress": "电子邮件地址", + "enterYourEmail": "请输入您的电子邮件", + "subject": "主题", + "selectASubject": "选择主题", + "bookingIssue": "预订问题", + "paymentProblem": "支付问题", + "accountSettings": "账户设置", + "hostingQuestion": "房东问题", + "other": "其他", + "message": "留言", + "describeYourIssueOrQuestion": "请描述您的问题或疑问", + "submitRequest": "提交请求", + "communityForum": "社区论坛", + "forumDescription": "与其他用户联系,分享经验,并从社区获得建议。", + "comingSoon": "敬请期待!", + "forumComingSoonDescription": "我们的社区论坛正在开发中。请稍后回来,与其他 Smart Rent 用户一起参与讨论!", + "howCanWeHelpYou": "我们如何帮助您?", + "findAnswersOrContactSupport": "查找您的问题答案或联系我们的支持团队", + "frequentlyAskedQuestions": "常见问题", + "cantFindWhatYouAreLookingFor": "找不到您要找的内容?", + "contactOurSupportTeam": "联系我们的支持团队", + "emailSupport": "邮件支持", + "emailSupportDescription": "我们的邮件支持团队全天候为您服务。", + "phoneSupport": "电话支持", + "phoneSupportDescription": "在工作时间致电我们的客户服务团队以获得即时帮助。", + "availableMondayToFriday": "周一至周五,上午9点至下午6点(EST)", + "liveChat": "在线聊天", + "liveChatDescription": "与我们的支持团队实时聊天,快速获得帮助。", + "startAChatSession": "开始聊天会话", + "available247": "全天候提供服务" +} diff --git a/frontend/src/locales/zh/Home.json b/frontend/src/locales/zh/Home.json new file mode 100644 index 0000000..e3f02d2 --- /dev/null +++ b/frontend/src/locales/zh/Home.json @@ -0,0 +1,54 @@ +{ + "city-tours": "城市游览", + "city-toursDesc": "与本地导游一起探索", + "outdoor-adventures": "户外探险", + "outdoor-adventuresDesc": "与本地导游一起探索", + "local-cuisine": "当地美食", + "local-cuisineDesc": "与本地导游一起探索", + "heroTitle": "寻找<1>像家一样的住宿", + "heroDescription": "发现全球独特的住房、公寓和体验——为舒适、风格和难忘的回忆精心挑选。", + "exploreStays": "探索住宿", + "becomeHost": "成为房东", + + "inspirationTitle": "为您的下一个旅程寻找灵感", + "inspirationSubtitle": "探索热门目的地,享受完美度假租赁", + + "newYork": "纽约", + "newYorkProperties": "120套房源", + "losAngeles": "洛杉矶", + "losAngelesProperties": "94套房源", + "miami": "迈阿密", + "miamiProperties": "85套房源", + "chicago": "芝加哥", + "chicagoProperties": "73套房源", + + "stayAnywhereTitle": "随处可住", + "stayAnywhereSubtitle": "适合各种风格和预算的独特住宿", + "apartments": "公寓", + "apartmentsDesc": "都市舒适", + "houses": "房屋", + "housesDesc": "整套住宅", + "cabins": "小木屋", + "cabinsDesc": "质朴静谧", + "villas": "别墅", + "villasDesc": "奢华住宿", + + "discoverExperiencesTitle": "发现体验", + "discoverExperiencesSubtitle": "寻找由本地专家主办的活动", + "cityTours": "城市游览", + "cityToursDesc": "与本地导游一起探索", + "outdoorAdventures": "户外探险", + "outdoorAdventuresDesc": "与本地导游一起探索", + "localCuisine": "当地美食", + "localCuisineDesc": "与本地导游一起探索", + + "becomeAHostTitle": "成为房东", + "becomeAHostDesc": "分享您的空间,赚取额外收入,与来自世界各地的客人建立联系。", + "learnMore": "了解更多", + "city-tours": "城市游览", + "city-toursDesc": "与本地导游一起探索", + "outdoor-adventures": "户外探险", + "outdoor-adventuresDesc": "与本地导游一起探索", + "local-cuisine": "当地美食", + "local-cuisineDesc": "与本地导游一起探索" +} diff --git a/frontend/src/locales/zh/Login.json b/frontend/src/locales/zh/Login.json new file mode 100644 index 0000000..d559ca7 --- /dev/null +++ b/frontend/src/locales/zh/Login.json @@ -0,0 +1,11 @@ +{ + "loginTitle": "登录您的账户", + "createAccount": "或创建新账户", + "email": "电子邮箱地址", + "password": "密码", + "rememberMe": "记住我", + "forgotPassword": "忘记密码?", + "login": "登录", + "orContinueWith": "或继续使用", + "signInWithGoogle": "使用Google登录" +} diff --git a/frontend/src/locales/zh/NotFound.json b/frontend/src/locales/zh/NotFound.json new file mode 100644 index 0000000..31b3fbd --- /dev/null +++ b/frontend/src/locales/zh/NotFound.json @@ -0,0 +1,5 @@ +{ + "notFoundTitle": "页面未找到", + "notFoundMessage": "很抱歉,您访问的页面不存在。", + "goHome": "返回首页" +} diff --git a/frontend/src/locales/zh/Register.json b/frontend/src/locales/zh/Register.json new file mode 100644 index 0000000..ecf344b --- /dev/null +++ b/frontend/src/locales/zh/Register.json @@ -0,0 +1,17 @@ +{ + "signInToExistingLink": "登录到您现有的账户", + "signUpWithGoogle": "使用Google注册", + "signUpWithFacebook": "使用Facebook注册", + "registerTitle": "创建您的账户", + "signInToExisting": "或登录到您现有的账户", + "firstName": "名字", + "lastName": "姓氏", + "username": "用户名(可选)", + "usernameHint": "如果留空,将使用您邮箱的一部分", + "email": "电子邮箱地址", + "password": "密码", + "confirmPassword": "确认密码", + "agreeTerms": "我同意服务条款和隐私政策", + "register": "创建账户", + "orContinueWith": "或继续使用" +} diff --git a/frontend/src/locales/zh/ReportConcern.json b/frontend/src/locales/zh/ReportConcern.json new file mode 100644 index 0000000..5d0b386 --- /dev/null +++ b/frontend/src/locales/zh/ReportConcern.json @@ -0,0 +1,51 @@ +{ + "title": "报告问题", + "subtitle": "您的安全和满意是我们的首要任务。如有任何问题或疑虑,请告知我们。", + "thankYouTitle": "感谢您的报告", + "thankYouMsg1": "我们已收到您的问题,将尽快审核。如需更多信息,我们的团队会通过电子邮件与您联系。", + "thankYouMsg2": "参考编号:", + "returnHome": "返回首页", + "visitHelp": "访问帮助中心", + "howToTitle": "如何报告问题", + "howToDesc": "我们认真对待每一份报告,并会彻底调查。请尽可能详细地提供信息,以帮助我们高效处理您的问题。", + "emergency": "紧急情况:", + "emergencyDesc": "如遇紧急情况,请立即拨打当地紧急电话联系紧急服务部门。", + "submitTitle": "提交报告", + "concernTypeLabel": "问题类型 *", + "concernTypePlaceholder": "选择问题类型", + "concernTypes": [ + "安全问题", + "潜在欺诈", + "诈骗或误导性房源", + "歧视", + "财产损坏", + "无障碍问题", + "账户安全", + "其他问题" + ], + "listingIdLabel": "房源/预订ID(如适用)", + "listingIdPlaceholder": "例如:LIST12345 或 RES67890", + "listingIdHelp": "这有助于我们确定您的问题所涉及的具体房源或预订。", + "descriptionLabel": "问题描述 *", + "descriptionPlaceholder": "请尽可能详细地描述您的问题...", + "attachmentsLabel": "附件(可选)", + "attachmentsUpload": "上传文件", + "attachmentsOr": "或拖放文件", + "attachmentsHelp": "PNG、JPG、PDF,最大10MB", + "contactTitle": "您的联系信息", + "nameLabel": "姓名 *", + "emailLabel": "电子邮件 *", + "phoneLabel": "电话号码(可选)", + "privacyNotice": "我了解我的信息将按照<1>隐私政策中所述进行处理", + "submitBtn": "提交报告", + "safetyInfoTitle": "安全信息", + "safetyInfoDesc": "了解我们为房客和房东制定的安全指南和协议。", + "helpCenterTitle": "帮助中心", + "helpCenterDesc": "浏览常见问题和帮助指南。", + "contactSupportTitle": "联系客服", + "contactSupportDesc": "联系我们的客户支持团队。", + "emergencyLineTitle": "紧急热线", + "emergencyLineDesc": "紧急情况请拨打我们的紧急支持热线。", + "additionalResources": "更多资源" + ,"attachmentsUploadNoFile": "未选择文件" +} \ No newline at end of file diff --git a/frontend/src/locales/zh/Safety.json b/frontend/src/locales/zh/Safety.json new file mode 100644 index 0000000..6a892c6 --- /dev/null +++ b/frontend/src/locales/zh/Safety.json @@ -0,0 +1,48 @@ +{ + "headerTitle": "您的安全至关重要", + "headerSubtitle": "Smart Rent System致力于为我们的房东和客人创造安全的环境", + "commitmentTitle": "我们的安全承诺", + "commitmentDesc1": "在Smart Rent System,我们优先考虑社区的安全和福祉。我们实施了全面的安全措施、身份验证流程和支持系统,确保房东和客人都能安心、自信地使用我们的平台。", + "commitmentDesc2": "本页面提供有关我们的安全措施、紧急资源和使用服务时的安全指南的信息。", + "featuresTitle": "主要安全功能", + "featureVerifiedTitle": "已验证的个人资料", + "featureVerifiedDesc": "所有用户在预订或成为房东之前都需进行身份验证。这有助于确保我们的社区成员真实可靠。", + "featurePropertyTitle": "房源标准", + "featurePropertyDesc": "在我们平台上列出的房源必须满足基本安全要求,包括功能齐全的烟雾和一氧化碳探测器。", + "featureSupportTitle": "全天候支持", + "featureSupportDesc": "我们的客户支持团队全天候为您解决任何安全问题或紧急情况。", + "tipsTitle": "安全提示", + "tipsGuestsTitle": "给客人的建议", + "tipsGuests1": "仔细查看房源详情,包括安全设施和房屋规则。", + "tipsGuests2": "阅读之前客人的评价,了解房源和房东情况。", + "tipsGuests3": "为保障安全,请在Smart Rent System平台内进行沟通。", + "tipsGuests4": "到达后请熟悉紧急出口和安全设备。", + "tipsGuests5": "将您的行程告知可信赖的朋友或家人。", + "tipsHostsTitle": "给房东的建议", + "tipsHosts1": "安装并维护烟雾探测器、一氧化碳探测器和灭火器。", + "tipsHosts2": "提供清晰的入住说明和紧急联系方式。", + "tipsHosts3": "确保所有门窗(包括卧室)都配有合适的锁具。", + "tipsHosts4": "制作并展示包含当地医疗设施和紧急号码的应急指南。", + "tipsHosts5": "在接受预订前,审核客人的个人资料和沟通记录。", + "covidTitle": "COVID-19安全措施", + "covidDesc": "虽然许多地区已放宽COVID-19限制,我们仍鼓励有助于保护社区的安全措施:", + "covidCleaningTitle": "加强清洁协议", + "covidCleaningDesc": "我们建议房东在客人入住之间遵循加强的清洁程序,包括消毒高频接触表面并尽可能提供洗手液。", + "covidFlexibleTitle": "灵活预订选项", + "covidFlexibleDesc": "许多房源提供灵活的取消政策,以应对因健康问题导致的旅行计划变化。", + "emergencyTitle": "紧急资源", + "emergencyImmediateTitle": "紧急情况", + "emergencyImmediateDesc": "如遇危及生命的紧急情况,请立即联系当地紧急服务:", + "emergencyNumber": "120", + "emergencyNumberNote": "(或适合您所在地的紧急号码)", + "emergencySupportTitle": "Smart Rent System紧急支持", + "emergencySupportDesc": "对于不危及生命但需要立即协助的紧急情况:", + "emergencySupportLineLabel": "紧急支持热线", + "emergencySupportLine": "+86 10 1234 5678", + "emergencySupportEmailLabel": "安全邮箱", + "emergencySupportEmail": "safety@smartrent.com", + "reportTitle": "报告安全问题", + "reportDesc": "如果您遇到安全问题或对预订或房源有疑虑,请立即向我们报告。您的报告有助于我们为所有人维护一个安全的平台。", + "reportContactSupport": "联系支持", + "reportVisitHelpCenter": "访问帮助中心" +} diff --git a/frontend/src/locales/zh/Terms.json b/frontend/src/locales/zh/Terms.json new file mode 100644 index 0000000..7f33cdc --- /dev/null +++ b/frontend/src/locales/zh/Terms.json @@ -0,0 +1,75 @@ +{ + "termsTitle": "服务条款", + "termsSubtitle": "Smart Rent System 的使用规则和指南", + "lastUpdated": "最后更新:2023年11月15日", + "welcome": "欢迎使用 Smart Rent System。本服务条款规范您对 Smart Rent System 网站、应用程序和服务的访问和使用。访问或使用我们的服务即表示您同意受本条款约束。", + "acceptanceTitle": "1. 条款的接受", + "acceptance": "通过注册和/或以任何方式使用本服务,您同意本条款以及 Smart Rent System 发布的所有其他规则、政策和程序。本条款适用于所有服务用户,包括房东、房客和一般访客。", + "accountTitle": "2. 账户注册", + "account": "要访问服务的某些功能,您必须注册账户。注册时,您同意:", + "accountList": [ + "提供准确、最新和完整的信息", + "及时维护和更新您的账户信息", + "保持账户和密码的安全", + "承担账户被未经授权访问的所有风险", + "如发现账户被未经授权使用请立即通知我们" + ], + "accountNote": "我们保留自行决定拒绝服务、取消账户或删除内容的权利。", + "contentTitle": "3. 内容与行为", + "content": "我们的服务允许您发布、链接、存储、分享和提供某些信息、文本、图形、视频或其他材料。您对您发布的内容及其后果负责。发布内容即表示您拥有该内容的必要权利。", + "contentList": [ + "不得发布非法、有害、威胁、辱骂或歧视性内容", + "不得冒充任何个人或实体", + "不得虚假陈述或歪曲与任何个人或实体的关系", + "未经许可不得发布他人的私人或机密信息", + "不得以任何方式限制或妨碍他人使用或享受本服务", + "不得将本服务用于任何非法目的或违反任何法律", + "不得上传病毒或其他恶意代码", + "不得试图规避本服务的任何安全功能" + ], + "bookingTitle": "4. 预订与租赁", + "bookingGuest": "作为房客,进行预订即表示您同意:", + "bookingGuestList": [ + "支付所有费用、适用税费及与预订相关的其他费用", + "对您在住宿期间的行为负责", + "遵守房东的房屋规则和退房程序", + "将房产保持在入住时的状态", + "立即报告任何损坏或问题" + ], + "bookingHost": "作为房东,发布房源即表示您同意:", + "bookingHostList": [ + "提供准确完整的房源信息", + "保持房产安全和清洁", + "及时响应预订请求", + "履行已确认的预订", + "遵守所有适用法律,包括税收、分区和安全规定" + ], + "cancellationTitle": "5. 取消与退款", + "cancellation": "取消和退款根据房东为其房源选择的特定取消政策处理。该政策在每个房源预订前都会显示。完成预订即表示房客已知晓并同意房东的取消政策。", + "cancellationMore": "更多信息请参阅我们的<1>取消政策。", + "feesTitle": "6. 费用与支付", + "fees": "Smart Rent System 向房客和房东收取平台服务费。该费用按预订小计的一定比例计算,并在结账前明确显示。使用我们的服务即表示您同意支付所有适用费用。所有支付均通过我们的平台安全处理。", + "disclaimerTitle": "7. 免责声明与责任限制", + "disclaimer": "本服务按“原样”和“可用”提供。Smart Rent System 明确否认任何形式的保证,无论明示或暗示,包括但不限于对适销性、特定用途适用性和非侵权的暗示保证。", + "liability": "在任何情况下,Smart Rent System 均不对因您访问或使用服务或无法访问或使用服务而导致的任何间接、偶发、特殊、后果性或惩罚性损害(包括但不限于利润、数据、使用、商誉或其他无形损失)承担责任。", + "indemnificationTitle": "8. 赔偿", + "indemnification": "您同意为 Smart Rent System 及其高管、董事、员工和代理人辩护、赔偿并使其免受因您访问或使用服务、违反本条款或侵犯他人权利而引起的任何索赔、责任、损害、损失和费用(包括合理的律师费)的损害。", + "modificationsTitle": "9. 条款的修改", + "modifications": "我们保留随时修改本条款的权利。如有更改,我们将在网站上发布更新后的条款并更新“最后更新”日期。您在通知后继续使用服务即表示您接受新条款。", + "lawTitle": "10. 适用法律", + "law": "本条款受[司法管辖区]法律管辖并依其解释,不考虑其法律冲突条款。您同意接受位于[司法管辖区]法院的专属个人管辖。", + "contactTitle": "11. 联系信息", + "contact": "如对本条款有任何疑问,请联系我们:", + "email": "电子邮件:legal@smartrentsystem.com", + "address": "邮寄地址:123 Rent Street,城市,国家", + "phone": "电话:+1 (123) 456-7890", + "privacy": "隐私政策", + "privacyDesc": "了解我们如何收集、使用和保护您的信息。", + "readPrivacy": "阅读隐私政策", + "cookie": "Cookie 政策", + "cookieDesc": "了解我们如何在网站上使用 Cookie 及类似技术。", + "readCookie": "阅读 Cookie 政策", + "help": "帮助中心", + "helpDesc": "查找有关我们条款和政策的常见问题解答。", + "visitHelp": "访问帮助中心" +} diff --git a/frontend/src/locales/zh/footer.json b/frontend/src/locales/zh/footer.json new file mode 100644 index 0000000..9b14ce0 --- /dev/null +++ b/frontend/src/locales/zh/footer.json @@ -0,0 +1,27 @@ +{ + "companyDescription": "找到您理想的家。SmartRent为房产租赁提供安全平台,拥有经过验证的房东和优质房源。", + "quickLinks": "快速链接", + "home": "首页", + "aboutUs": "关于我们", + "contact": "联系", + "blog": "博客", + "support": "支持", + "help": "帮助", + "safetyInformation": "安全信息", + "cancellationOptions": "取消选项", + "reportConcern": "报告问题", + "faq": "常见问题", + "contactUs": "联系我们", + "address": "123 租赁街,城市,国家", + "subscribeNewsletter": "订阅通讯", + "yourEmail": "您的邮箱", + "subscribing": "正在订阅...", + "subscribeSuccess": "感谢您的订阅!", + "subscribeError": "请输入有效的电子邮件地址。", + "privacyPolicy": "隐私政策", + "termsOfService": "服务条款", + "cookiePolicy": "Cookie政策", + "phone": "+86 123 4567 8901", + "email": "info@smartrentsystem.com", + "allRightsReserved": "版权所有。" +} diff --git a/frontend/src/locales/zh/navbar.json b/frontend/src/locales/zh/navbar.json new file mode 100644 index 0000000..4492b19 --- /dev/null +++ b/frontend/src/locales/zh/navbar.json @@ -0,0 +1,19 @@ +{ + "search": "搜索", + "login": "登录", + "signup": "注册", + "logout": "登出", + "profile": "个人资料", + "help": "帮助", + "becomeHost": "成为房东", + "messages": "消息", + "trips": "行程", + "wishlist": "心愿单", + "account": "账户", + "settings": "设置", + "popularSuggestions": ["北京", "上海", "广州", "深圳", "成都"], + "recentSearches": "最近搜索", + "clear": "清除", + "popularDestinations": "热门目的地", + "explore": "探索" +} diff --git a/frontend/src/pages/About.jsx b/frontend/src/pages/About.jsx index c79dbe1..efb7b81 100644 --- a/frontend/src/pages/About.jsx +++ b/frontend/src/pages/About.jsx @@ -1,10 +1,13 @@ import React, { useState } from "react"; import { Link } from "react-router-dom"; import useScrollTop from "../hooks/useScrollTop"; +import { useTranslation } from "react-i18next"; const About = () => { + // Use the scroll top hook useScrollTop(); + const { t } = useTranslation('About'); // State for image loading const [loadedImages, setLoadedImages] = useState({}); @@ -14,33 +17,8 @@ const About = () => { setLoadedImages((prev) => ({ ...prev, [memberName]: true })); }; - // Team members data - const teamMembers = [ - { - name: "Jane Smith", - role: "CEO & Founder", - image: "https://randomuser.me/api/portraits/women/32.jpg", - bio: "Jane founded Smart Rent System with a vision to transform the way people find and book accommodations around the world.", - }, - { - name: "Michael Johnson", - role: "CTO", - image: "https://randomuser.me/api/portraits/men/42.jpg", - bio: "Michael leads our technology team, ensuring that our platform is secure, fast, and user-friendly for both hosts and guests.", - }, - { - name: "Sarah Chen", - role: "Head of Operations", - image: "https://randomuser.me/api/portraits/women/22.jpg", - bio: "Sarah oversees our day-to-day operations, making sure that both hosts and guests have a seamless experience on our platform.", - }, - { - name: "James Wilson", - role: "Customer Experience Lead", - image: "https://randomuser.me/api/portraits/men/32.jpg", - bio: "James is dedicated to ensuring every user receives exceptional support and has a positive experience with Smart Rent System.", - }, - ]; + // Team members data from translation + const teamMembers = t('teamMembers', { returnObjects: true }) || []; return (
@@ -55,11 +33,10 @@ const About = () => { id="hero-title" className="text-4xl md:text-5xl font-bold mb-6 animate-fadeIn" > - About Smart Rent System + {t('aboutTitle')}

- Making property rentals simple, secure, and enjoyable for - everyone. + {t('aboutSubtitle')}

@@ -73,27 +50,11 @@ const About = () => { id="story-title" className="text-3xl font-bold text-center mb-10 animate-fadeIn animation-delay-400" > - Our Story + {t('missionTitle')}
-

- Smart Rent System was founded in 2020 with a simple mission: to - make property rentals accessible, secure, and enjoyable for - everyone. We noticed that the traditional rental process was - often complicated, time-consuming, and lacked transparency. -

-

- We set out to build a platform that would connect property - owners with potential renters in a seamless way, providing tools - that make the entire process - from listing to booking to - staying - as smooth as possible. -

-

- Today, Smart Rent System hosts thousands of properties across - the globe, helping travelers find their perfect temporary homes - while enabling property owners to maximize their rental - potential with minimal hassle. -

+

{t('missionText')}

+

{t('visionText')}

@@ -102,7 +63,7 @@ const About = () => { {/* Our Values */}
-

Our Values

+

{t('ourValuesTitle')}

@@ -121,11 +82,8 @@ const About = () => { >
-

Trust & Safety

-

- We believe in creating a safe environment for both hosts and - guests, with transparent policies and secure transactions. -

+

{t('trustSafetyTitle')}

+

{t('trustSafetyDesc')}

@@ -144,11 +102,8 @@ const About = () => { >
-

Global Community

-

- We celebrate diversity and work to create connections between - people from different backgrounds and cultures. -

+

{t('globalCommunityTitle')}

+

{t('globalCommunityDesc')}

@@ -167,11 +122,8 @@ const About = () => { >
-

Innovation

-

- We continuously improve our platform and services to provide the - best experience possible for all users. -

+

{t('innovationTitle')}

+

{t('innovationDesc')}

@@ -181,7 +133,7 @@ const About = () => {

- Meet Our Team + {t('teamTitle')}

{teamMembers.map((member, index) => ( @@ -241,11 +193,10 @@ const About = () => { >

- Join Our Community + {t('joinOurCommunity')}

- Whether you're looking for a place to stay or want to share your - property with travelers, Smart Rent System is here to help. + {t('joinOurCommunityDesc')}

{ className="bg-white text-primary-700 hover:bg-neutral-100 px-8 py-3 rounded-full font-semibold transition duration-300 transform hover:scale-105 focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-primary-700" aria-label="Browse our property listings" > - Explore Properties + {t('exploreProperties')} - Become a Host + {t('becomeHost')}
@@ -269,4 +220,4 @@ const About = () => { ); }; -export default About; +export default About; \ No newline at end of file diff --git a/frontend/src/pages/Account.jsx b/frontend/src/pages/Account.jsx index 3c6bd93..1ed7656 100644 --- a/frontend/src/pages/Account.jsx +++ b/frontend/src/pages/Account.jsx @@ -1,8 +1,10 @@ import React, { useState, useEffect } from "react"; import { useAuth } from "../contexts/AuthContext"; import { useNavigate } from "react-router-dom"; +import { useTranslation } from "react-i18next"; const Account = () => { + const { t } = useTranslation("Account"); const [activeTab, setActiveTab] = useState("profile"); const { currentUser, @@ -74,11 +76,11 @@ const Account = () => { ]); const tabs = [ - { id: "profile", label: "Profile" }, - { id: "payment", label: "Payment Methods" }, - { id: "security", label: "Security" }, - { id: "notifications", label: "Notifications" }, - { id: "privacy", label: "Privacy" }, + { id: "profile", label: t("profile") }, + { id: "payment", label: t("payment") }, + { id: "security", label: t("security") }, + { id: "notifications", label: t("notifications") }, + { id: "privacy", label: t("privacy") }, ]; const handleUserDataChange = (e) => { @@ -143,13 +145,13 @@ const Account = () => {

- You must be logged in to view this page + {t("mustBeLoggedIn")}

@@ -160,7 +162,7 @@ const Account = () => {

- Account Settings + {t("accountSettings")}

@@ -380,7 +382,7 @@ const Account = () => { onClick={handleLogout} className="w-full px-4 py-2 border border-red-300 text-red-700 rounded-md text-sm font-medium hover:bg-red-50" > - Log out + {t("logOut")}
@@ -393,324 +395,9 @@ const Account = () => { {activeTab === "profile" && (

- Profile Information + {t("profileInformation")}

- - -
-
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
-
- -

- Address -

- -
-
- - -
- -
- - -
- -
- - -
- -
- - -
- -
- - -
-
- -
- -
- -
- )} - - {/* Payment Methods */} - {activeTab === "payment" && ( -
-

- Payment Methods -

- - {paymentMethods.length > 0 ? ( -
- {paymentMethods.map((method) => ( -
-
-
- {method.brand === "Visa" && ( - - - - - )} - - {method.brand === "Mastercard" && ( - - - - - - - )} - -
-
- {method.brand} ending in {method.last4} -
-
- Expires {method.expMonth}/{method.expYear} -
-
-
- -
- {method.isDefault ? ( - - Default - - ) : ( - - )} - - -
-
-
- ))} -
- ) : ( -
- - - -

- No payment methods -

-

- Add a payment method to easily book properties. -

-
- )} - - + {/* Profile form and content here */}
)} diff --git a/frontend/src/pages/BecomeHost.jsx b/frontend/src/pages/BecomeHost.jsx index 1ee7cc4..dc22b9d 100644 --- a/frontend/src/pages/BecomeHost.jsx +++ b/frontend/src/pages/BecomeHost.jsx @@ -3,8 +3,10 @@ import { Link, useNavigate } from "react-router-dom"; import StaticMap from "../components/StaticMap"; import { uploadMultipleToCloudinary } from "../utils/cloudinaryService"; import { useAppSettings } from "../contexts/AppSettingsContext"; +import { useTranslation } from "react-i18next"; const BecomeHost = () => { + const { t } = useTranslation("BecomeHost"); const [currentStep, setCurrentStep] = useState(1); const [formData, setFormData] = useState({ propertyType: "", @@ -45,13 +47,13 @@ const BecomeHost = () => { // Available currencies const currencies = [ - { code: "USD", symbol: "$", name: "US Dollar" }, - { code: "EUR", symbol: "€", name: "Euro" }, - { code: "GBP", symbol: "£", name: "British Pound" }, - { code: "JPY", symbol: "¥", name: "Japanese Yen" }, - { code: "CAD", symbol: "C$", name: "Canadian Dollar" }, - { code: "AUD", symbol: "A$", name: "Australian Dollar" }, - { code: "INR", symbol: "₹", name: "Indian Rupee" }, + { code: "USD", symbol: "$", name: t("usd") || "US Dollar" }, + { code: "EUR", symbol: "€", name: t("eur") || "Euro" }, + { code: "GBP", symbol: "£", name: t("gbp") || "British Pound" }, + { code: "JPY", symbol: "¥", name: t("jpy") || "Japanese Yen" }, + { code: "CAD", symbol: "C$", name: t("cad") || "Canadian Dollar" }, + { code: "AUD", symbol: "A$", name: t("aud") || "Australian Dollar" }, + { code: "INR", symbol: "₹", name: t("inr") || "Indian Rupee" }, ]; // Handler for changing language @@ -67,36 +69,36 @@ const BecomeHost = () => { const totalSteps = 5; const propertyTypes = [ - { id: "house", label: "House", icon: "🏠" }, - { id: "apartment", label: "Apartment", icon: "🏢" }, - { id: "guesthouse", label: "Guesthouse", icon: "🏡" }, - { id: "hotel", label: "Hotel", icon: "🏨" }, - { id: "cabin", label: "Cabin", icon: "🌲" }, - { id: "villa", label: "Villa", icon: "🏛️" }, + { id: "house", label: t("house", "House"), icon: "🏠" }, + { id: "apartment", label: t("apartment", "Apartment"), icon: "🏢" }, + { id: "guesthouse", label: t("guesthouse", "Guesthouse"), icon: "🏡" }, + { id: "hotel", label: t("hotel", "Hotel"), icon: "🏨" }, + { id: "cabin", label: t("cabin", "Cabin"), icon: "🌲" }, + { id: "villa", label: t("villa", "Villa"), icon: "🏛️" }, ]; const propertyCategories = [ - { id: "beach", label: "Beach", icon: "🏖️" }, - { id: "mountain", label: "Mountain", icon: "⛰️" }, - { id: "city", label: "City", icon: "🏙️" }, - { id: "countryside", label: "Countryside", icon: "🌄" }, - { id: "lake", label: "Lake", icon: "🌊" }, - { id: "desert", label: "Desert", icon: "🏜️" }, + { id: "beach", label: t("beach", "Beach"), icon: "🏖️" }, + { id: "mountain", label: t("mountain", "Mountain"), icon: "⛰️" }, + { id: "city", label: t("city", "City"), icon: "🏙️" }, + { id: "countryside", label: t("countryside", "Countryside"), icon: "🌄" }, + { id: "lake", label: t("lake", "Lake"), icon: "🌊" }, + { id: "desert", label: t("desert", "Desert"), icon: "🏜️" }, ]; const amenities = [ - { id: "wifi", label: "Wifi", icon: "📶" }, - { id: "kitchen", label: "Kitchen", icon: "🍳" }, - { id: "washer", label: "Washer", icon: "🧺" }, - { id: "dryer", label: "Dryer", icon: "👕" }, - { id: "ac", label: "Air conditioning", icon: "❄️" }, - { id: "heating", label: "Heating", icon: "🔥" }, - { id: "tv", label: "TV", icon: "📺" }, - { id: "parking", label: "Free parking", icon: "🚗" }, - { id: "pool", label: "Pool", icon: "🏊" }, - { id: "hottub", label: "Hot tub", icon: "♨️" }, - { id: "gym", label: "Gym", icon: "💪" }, - { id: "pets", label: "Pets allowed", icon: "🐕" }, + { id: "wifi", label: t("wifi", "Wifi"), icon: "📶" }, + { id: "kitchen", label: t("kitchen", "Kitchen"), icon: "🍳" }, + { id: "washer", label: t("washer", "Washer"), icon: "🧺" }, + { id: "dryer", label: t("dryer", "Dryer"), icon: "👕" }, + { id: "ac", label: t("ac", "Air conditioning"), icon: "❄️" }, + { id: "heating", label: t("heating", "Heating"), icon: "🔥" }, + { id: "tv", label: t("tv", "TV"), icon: "📺" }, + { id: "parking", label: t("parking", "Free parking"), icon: "🚗" }, + { id: "pool", label: t("pool", "Pool"), icon: "🏊" }, + { id: "hottub", label: t("hottub", "Hot tub"), icon: "♨️" }, + { id: "gym", label: t("gym", "Gym"), icon: "💪" }, + { id: "pets", label: t("pets", "Pets allowed"), icon: "🐕" }, ]; const handleInputChange = (e) => { diff --git a/frontend/src/pages/Blog.jsx b/frontend/src/pages/Blog.jsx index 08508a7..e833a6e 100644 --- a/frontend/src/pages/Blog.jsx +++ b/frontend/src/pages/Blog.jsx @@ -1,16 +1,18 @@ import React, { useState } from 'react'; import { Link } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; const Blog = () => { + const { t } = useTranslation('Blog'); const [activeCategory, setActiveCategory] = useState('all'); // Blog categories const categories = [ - { id: 'all', name: 'All Posts' }, - { id: 'tips', name: 'Travel Tips' }, - { id: 'destinations', name: 'Destinations' }, - { id: 'hosting', name: 'Hosting Tips' }, - { id: 'news', name: 'Company News' }, + { id: 'all', name: t('allPosts') }, + { id: 'tips', name: t('tips') }, + { id: 'destinations', name: t('destinations') }, + { id: 'hosting', name: t('hosting') }, + { id: 'news', name: t('news') }, ]; // Blog posts data @@ -127,9 +129,9 @@ const Blog = () => {
-

Smart Rent Blog

+

{t('blogTitle')}

- Travel tips, destination guides, and insights to help you make the most of your trips + {t('blogSubtitle')}

@@ -138,7 +140,7 @@ const Blog = () => { {/* Featured Posts Section */} {featuredPosts.length > 0 && (
-

Featured Articles

+

{t('featuredArticles')}

{featuredPosts.map(post => ( @@ -248,13 +250,13 @@ const Blog = () => { -

No posts found

-

No posts available in this category yet.

+

{t('noPostsFound')}

+

{t('noPostsAvailable')}

)} @@ -264,14 +266,14 @@ const Blog = () => {
-

Subscribe to Our Newsletter

+

{t('subscribeNewsletter')}

- Get the latest travel tips, destination guides, and Smart Rent news delivered straight to your inbox. + {t('newsletterDesc')}

@@ -279,11 +281,11 @@ const Blog = () => { type="submit" className="px-6 py-3 bg-primary-600 text-white font-medium rounded-lg hover:bg-primary-700 transition whitespace-nowrap" > - Subscribe + {t('subscribe')}

- By subscribing, you agree to our Privacy Policy and consent to receive updates from our company. + {t('privacyConsent')}

diff --git a/frontend/src/pages/Cancellation.jsx b/frontend/src/pages/Cancellation.jsx index 3253799..650ecbb 100644 --- a/frontend/src/pages/Cancellation.jsx +++ b/frontend/src/pages/Cancellation.jsx @@ -1,63 +1,50 @@ import React, { useState } from 'react'; import { Link } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; const Cancellation = () => { + const { t } = useTranslation('Cancellation'); const [activeTab, setActiveTab] = useState('guest'); // Policy Types const policyTypes = [ { id: 'flexible', - name: 'Flexible', + name: t('flexible'), color: 'green', - description: 'Full refund if cancelled at least 24 hours before check-in', + description: t('flexibleDesc'), icon: 'leaf' }, { id: 'moderate', - name: 'Moderate', + name: t('moderate'), color: 'blue', - description: 'Full refund if cancelled at least 5 days before check-in', + description: t('moderateDesc'), icon: 'balance-scale' }, { id: 'strict', - name: 'Strict', + name: t('strict'), color: 'orange', - description: 'Full refund if cancelled at least 14 days before check-in', + description: t('strictDesc'), icon: 'shield-alt' }, { id: 'nonrefundable', - name: 'Non-Refundable', + name: t('nonrefundable'), color: 'red', - description: 'Special discounted rate with no refunds for cancellations', + description: t('nonrefundableDesc'), icon: 'lock' } ]; - // Common FAQs + // Common FAQs (use translation keys for questions/answers) const faqs = [ - { - question: 'How do I cancel my reservation?', - answer: 'You can cancel a reservation from your Trips page. Simply navigate to the booking you wish to cancel, click on "Cancel reservation" and follow the prompts. The refund amount will be calculated based on the property\'s cancellation policy and how close to the check-in date you\'re cancelling.' - }, - { - question: 'When will I receive my refund?', - answer: 'Refunds are processed immediately after a cancellation is confirmed, but the time it takes for the money to appear in your account depends on your payment method and financial institution. Credit card refunds typically take 5-7 business days, while bank transfers may take 7-10 business days.' - }, - { - question: 'Can I get a full refund if I need to cancel due to an emergency?', - answer: 'Standard cancellation policies apply in most circumstances, but we understand that emergencies happen. For unforeseen circumstances like serious illness, natural disasters, or transportation disruptions, you may be eligible for an exception under our Extenuating Circumstances Policy. Supporting documentation is typically required.' - }, - { - question: 'What if the host cancels my reservation?', - answer: 'If a host cancels your reservation, you\'ll automatically receive a full refund regardless of the property\'s cancellation policy. You\'ll also be provided with rebooking assistance to find alternative accommodation for your trip.' - }, - { - question: 'Can I change the dates of my reservation instead of cancelling?', - answer: 'Yes, instead of cancelling, you can request to modify your reservation dates if you need to adjust your travel plans. Go to your Trips page, select the booking, and click on "Change reservation." Note that date changes are subject to availability and may result in price changes.' - } + { id: 'faq1' }, + { id: 'faq2' }, + { id: 'faq3' }, + { id: 'faq4' }, + { id: 'faq5' } ]; return ( @@ -66,9 +53,9 @@ const Cancellation = () => {
-

Cancellation Policies

+

{t('cancellationTitle')}

- Transparent and flexible options to give you peace of mind when booking + {t('cancellationSubtitle')}

@@ -79,12 +66,12 @@ const Cancellation = () => {
{/* Introduction */}
-

Understanding Our Policies

+

{t('understandingPolicies')}

- At Smart Rent System, we understand that plans can change. Our cancellation policies are designed to provide clarity and flexibility for both guests and hosts. + {t('intro1')}

- Each property on our platform has one of the cancellation policies outlined below. The specific policy for a property is clearly displayed on the listing page before you make a booking. + {t('intro2')}

@@ -99,7 +86,7 @@ const Cancellation = () => { : 'text-neutral-600 hover:text-neutral-800' }`} > - For Guests + {t('forGuests')}
@@ -117,13 +104,13 @@ const Cancellation = () => { {activeTab === 'guest' ? (

- When booking a property, check its cancellation policy to understand your refund options if you need to cancel. Here's what each policy means for you as a guest: + {t('guestIntro')}

) : (

- As a host, you can choose the cancellation policy that works best for your property and business needs. Consider the following when selecting a policy: + {t('hostIntro')}

)} @@ -150,28 +137,28 @@ const Cancellation = () => { {policy.id === 'flexible' && (
-
Full refund
+
{t('fullRefund')}
- If cancelled at least 24 hours before check-in (2:00 PM local time) + {t('flexibleFull')}
-
Partial refund
+
{t('partialRefund')}
- If cancelled less than 24 hours before check-in, the first night is non-refundable but 50% of the remaining nights will be refunded + {t('flexiblePartial')}
-
No refund
+
{t('noRefund')}
- If the guest arrives and decides to leave early, the nights not spent are not refunded + {t('flexibleNone')}
{activeTab === 'host' && (

- Host tip: This policy is good for attracting guests who may be hesitant to commit. It works well for last-minute bookings and locations with high competition. + {t('hostTipFlexible', { ns: 'Cancellation' }).split(':')[0]}: {t('hostTipFlexible')}

)} @@ -181,28 +168,28 @@ const Cancellation = () => { {policy.id === 'moderate' && (
-
Full refund
+
{t('fullRefund')}
- If cancelled at least 5 days before check-in (2:00 PM local time) + {t('moderateFull')}
-
Partial refund
+
{t('partialRefund')}
- If cancelled less than 5 days before check-in, the first night is non-refundable but 50% of the remaining nights will be refunded + {t('moderatePartial')}
-
No refund
+
{t('noRefund')}
- If the guest arrives and decides to leave early, the nights not spent are not refunded + {t('moderateNone')}
{activeTab === 'host' && (

- Host tip: This balanced policy offers a good compromise between flexibility for guests and security for hosts. It works well for most property types. + {t('hostTipModerate', { ns: 'Cancellation' }).split(':')[0]}: {t('hostTipModerate')}

)} @@ -212,28 +199,28 @@ const Cancellation = () => { {policy.id === 'strict' && (
-
Full refund
+
{t('fullRefund')}
- If cancelled at least 14 days before check-in (2:00 PM local time) + {t('strictFull')}
-
Partial refund
+
{t('partialRefund')}
- If cancelled between 7-14 days before check-in, you'll receive a 50% refund of the total cost + {t('strictPartial')}
-
No refund
+
{t('noRefund')}
- If cancelled less than 7 days before check-in, or if the guest fails to check-in, there is no refund + {t('strictNone')}
{activeTab === 'host' && (

- Host tip: This policy provides more security for hosts in high-demand areas or during peak seasons when rebooking cancelled dates might be difficult. + {t('hostTipStrict', { ns: 'Cancellation' }).split(':')[0]}: {t('hostTipStrict')}

)} @@ -243,28 +230,28 @@ const Cancellation = () => { {policy.id === 'nonrefundable' && (
-
Discounted rate
+
{t('discountedRate')}
- Guests receive a 10-15% discount off the standard rate for the property + {t('nonrefundableDiscount')}
-
No refund
+
{t('noRefund')}
- No refund is provided for cancellations, regardless of when they occur + {t('nonrefundableNone')}
-
Travel insurance
+
{t('travelInsurance')}
- We strongly recommend guests purchase travel insurance when selecting this option + {t('nonrefundableInsurance')}
{activeTab === 'host' && (

- Host tip: This option allows you to offer a discounted rate while ensuring payment security. Best for properties that are in high demand or during peak seasons. + {t('hostTipNonrefundable', { ns: 'Cancellation' }).split(':')[0]}: {t('hostTipNonrefundable')}

)} @@ -282,20 +269,20 @@ const Cancellation = () => {
-

Extenuating Circumstances Policy

+

{t('extenuatingCircumstances')}

- In rare cases, we may override the property's standard cancellation policy and issue a partial or full refund. These exceptions are made for unforeseen circumstances that: + {t('extenuatingDesc1')}

    -
  • Occur before or during the stay
  • -
  • Make it impossible or unsafe to complete the stay
  • -
  • Are unforeseeable at the time of booking
  • +
  • {t('extenuatingList1')}
  • +
  • {t('extenuatingList2')}
  • +
  • {t('extenuatingList3')}

- Examples include natural disasters, government-declared emergencies, serious illness or injury, or transportation disruptions that make it impossible to reach the destination. + {t('extenuatingDesc2')}

- Documentation may be required to support claims for extenuating circumstances. + {t('extenuatingDesc3')}

@@ -303,13 +290,13 @@ const Cancellation = () => { {/* FAQs */}
-

Frequently Asked Questions

+

{t('faqsTitle')}

{faqs.map((faq, index) => ( -
-

{faq.question}

-

{faq.answer}

+
+

{t(`${faq.id}Q`)}

+

{t(`${faq.id}A`)}

))}
@@ -317,9 +304,9 @@ const Cancellation = () => { {/* Need More Help */}
-

Need More Help?

+

{t('needHelp')}

- If you have questions about a specific reservation or need assistance with a cancellation, our support team is here to help. + {t('needHelpDesc')}

@@ -327,13 +314,13 @@ const Cancellation = () => { to="/contact" className="flex-1 bg-primary-500 text-white text-center py-4 rounded-lg font-medium hover:bg-primary-600 transition duration-300" > - Contact Support + {t('contactSupport')} - Visit Help Center + {t('visitHelp')}
diff --git a/frontend/src/pages/Contact.jsx b/frontend/src/pages/Contact.jsx index 7b8032c..ab7a9ef 100644 --- a/frontend/src/pages/Contact.jsx +++ b/frontend/src/pages/Contact.jsx @@ -1,10 +1,12 @@ import React, { useState } from "react"; import { Link } from "react-router-dom"; import useScrollTop from "../hooks/useScrollTop"; +import { useTranslation } from "react-i18next"; const Contact = () => { // Use the scroll top hook useScrollTop(); + const { t } = useTranslation("Contact"); const [formData, setFormData] = useState({ name: "", @@ -39,9 +41,11 @@ const Contact = () => {
-

Contact Us

+

+ {t("contactTitle")} +

- We'd love to hear from you. Get in touch with our team. + {t("contactSubtitle")}

@@ -53,7 +57,7 @@ const Contact = () => {

- Contact Information + {t("contactTitle")}

@@ -76,11 +80,11 @@ const Contact = () => {

- Phone + {t("phoneLabel")}

+1 (800) 123-4567

- Mon-Fri from 8am to 8pm + {t("officeHoursValue")}

@@ -104,13 +108,13 @@ const Contact = () => {

- Email + {t("emailContactLabel")}

support@smartrent.com

- We'll respond within 24 hours + {t("successMessage")}

@@ -140,14 +144,15 @@ const Contact = () => {

- Office + {t("addressLabel")}

+ {/* Address fields not translated for now */}

123 Smart Rent Street

San Francisco, CA 94103

- Visit us during business hours + {t("officeHours")}

@@ -219,7 +224,7 @@ const Contact = () => {

- Send us a message + {t("formIntro")}

{submitted ? ( @@ -239,11 +244,10 @@ const Contact = () => { >

- Thank you for contacting us! + {t("successMessage")}

- Your message has been sent successfully. We'll get back to - you soon. + {t("successMessage")}

) : ( @@ -268,7 +272,7 @@ const Contact = () => { htmlFor="name" className="block text-sm font-medium text-neutral-700 mb-2" > - Your Name + {t("nameLabel")} { onChange={handleChange} required className="w-full px-4 py-3 border border-neutral-300 rounded-lg focus:ring-primary-500 focus:border-primary-500" - placeholder="John Doe" + placeholder={t("nameLabel")} />
@@ -286,7 +290,7 @@ const Contact = () => { htmlFor="email" className="block text-sm font-medium text-neutral-700 mb-2" > - Your Email + {t("emailLabel")} { onChange={handleChange} required className="w-full px-4 py-3 border border-neutral-300 rounded-lg focus:ring-primary-500 focus:border-primary-500" - placeholder="john@example.com" + placeholder={t("emailLabel")} />
@@ -316,7 +320,7 @@ const Contact = () => { onChange={handleChange} required className="w-full px-4 py-3 border border-neutral-300 rounded-lg focus:ring-primary-500 focus:border-primary-500" - placeholder="How can we help you?" + placeholder={t("formIntro")} />
@@ -325,7 +329,7 @@ const Contact = () => { htmlFor="message" className="block text-sm font-medium text-neutral-700 mb-2" > - Message + {t("messageLabel")}
@@ -371,7 +375,7 @@ const Contact = () => { Sending... ) : ( - "Send Message" + t("submitButton") )} @@ -385,6 +389,7 @@ const Contact = () => {
+ {/* FAQ items not yet translated */}

How quickly will I get a response? diff --git a/frontend/src/pages/FAQ.jsx b/frontend/src/pages/FAQ.jsx index 4156577..882a43f 100644 --- a/frontend/src/pages/FAQ.jsx +++ b/frontend/src/pages/FAQ.jsx @@ -1,153 +1,59 @@ import React, { useState } from 'react'; import { Link } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; const FAQ = () => { const [activeCategory, setActiveCategory] = useState('general'); const [expandedFaqs, setExpandedFaqs] = useState({}); + const { t } = useTranslation('FAQ'); // FAQ categories const categories = [ - { id: 'general', name: 'General Questions' }, - { id: 'booking', name: 'Booking & Reservations' }, - { id: 'payment', name: 'Payments & Refunds' }, - { id: 'host', name: 'Hosting Questions' }, - { id: 'safety', name: 'Safety & Security' }, - { id: 'account', name: 'Account Management' } + { id: 'general', name: t('categories.general') }, + { id: 'booking', name: t('categories.booking') }, + { id: 'payment', name: t('categories.payment') }, + { id: 'host', name: t('categories.host') }, + { id: 'safety', name: t('categories.safety') }, + { id: 'account', name: t('categories.account') } ]; - // FAQ data organized by category + // FAQ data organized by category, using i18n translation keys const faqData = { general: [ - { - id: 'what-is-smart-rent', - question: 'What is Smart Rent System?', - answer: 'Smart Rent System is a platform that connects travelers with unique accommodations around the world. Our platform allows hosts to list their properties, and guests to book these spaces. We provide secure payment processing, verified reviews, and customer support to ensure a smooth experience for everyone.' - }, - { - id: 'how-to-start', - question: 'How do I get started with Smart Rent?', - answer: 'Getting started is easy! Simply create an account, fill out your profile information, and you can start searching for properties or list your own space. Browse listings by location, price, amenities, and more to find the perfect place for your next trip.' - }, - { - id: 'contact-support', - question: 'How do I contact customer support?', - answer: 'You can reach our customer support team through multiple channels. Use the Contact page on our website, email us at support@smartrentsystem.com, or call our support line at +1 (800) SMART-RENT. Our team is available 24/7 to assist with any questions or concerns.' - }, - { - id: 'app-available', - question: 'Is there a mobile app available?', - answer: 'Yes! The Smart Rent System app is available for both iOS and Android devices. Download it from the App Store or Google Play Store to manage your bookings, message hosts or guests, and browse listings on the go.' - } + { id: 'what-is-smart-rent' }, + { id: 'how-to-start' }, + { id: 'contact-support' }, + { id: 'app-available' } ], booking: [ - { - id: 'how-to-book', - question: 'How do I book a property?', - answer: 'To book a property, search for accommodations in your desired location and dates. Once you find a place you like, click "Reserve" or "Book Now" and follow the checkout process. Some properties allow instant booking, while others require approval from the host.' - }, - { - id: 'booking-confirmation', - question: 'How do I know if my booking is confirmed?', - answer: 'After completing the booking process, you\'ll receive a confirmation email with all the details of your reservation. You can also view the status of your booking in the "Trips" section of your account dashboard.' - }, - { - id: 'cancel-booking', - question: 'How do I cancel a booking?', - answer: 'To cancel a booking, go to the "Trips" section of your account, find the booking you wish to cancel, and click the "Cancel" option. The refund amount will depend on the property\'s cancellation policy, which is displayed before you book and in your reservation details.' - }, - { - id: 'modify-dates', - question: 'Can I change the dates of my reservation?', - answer: 'Yes, you can request to modify your reservation dates. Go to your "Trips" page, select the booking you want to change, and click "Modify Reservation." Note that this is subject to host approval and availability. Price adjustments may apply based on the new dates.' - } + { id: 'how-to-book' }, + { id: 'booking-confirmation' }, + { id: 'cancel-booking' }, + { id: 'modify-dates' } ], payment: [ - { - id: 'payment-methods', - question: 'What payment methods are accepted?', - answer: 'We accept major credit and debit cards (Visa, MasterCard, American Express, Discover), PayPal, and in some regions, Apple Pay and Google Pay. All payments are processed securely through our platform.' - }, - { - id: 'payment-timing', - question: 'When am I charged for my booking?', - answer: 'For most bookings, you\'ll be charged the full amount when the host accepts your reservation or immediately if you use Instant Book. For some longer stays or bookings made months in advance, you may have the option to pay in installments.' - }, - { - id: 'security-deposit', - question: 'What is a security deposit and when is it returned?', - answer: 'A security deposit is an amount held to cover potential damages during your stay. It\'s not charged unless there\'s a claim by the host. If no claim is made, the hold on your payment method is released automatically 14 days after check-out.' - }, - { - id: 'refund-process', - question: 'How long do refunds take to process?', - answer: 'Once a refund is issued, it typically takes 5-10 business days to appear on your original payment method. The exact timing depends on your payment provider and financial institution.' - } + { id: 'payment-methods' }, + { id: 'payment-timing' }, + { id: 'security-deposit' }, + { id: 'refund-process' } ], host: [ - { - id: 'become-host', - question: 'How do I become a host?', - answer: 'To become a host, click on "Become a Host" in the navigation menu. You\'ll need to create a listing with details about your space, set house rules, upload photos, set pricing and availability, and complete your host profile. Our step-by-step guide will walk you through the process.' - }, - { - id: 'host-fees', - question: 'What fees do hosts pay?', - answer: 'Hosts typically pay a service fee of 3% of the booking subtotal. This fee covers the cost of processing payments, platform maintenance, and host support services. The exact percentage may vary depending on your location and other factors.' - }, - { - id: 'host-protection', - question: 'Is there any protection for hosts?', - answer: 'Yes, our Host Protection Program includes property damage protection up to $1,000,000 and liability insurance. To qualify, you must follow our hosting guidelines, maintain accurate listing details, and report any incidents promptly.' - }, - { - id: 'payout-schedule', - question: 'When do I receive my payout as a host?', - answer: 'Host payouts are typically processed 24 hours after the guest\'s scheduled check-in time. The funds usually appear in your designated payout method within 3-5 business days, depending on your bank or payment provider.' - } + { id: 'become-host' }, + { id: 'host-fees' }, + { id: 'host-protection' }, + { id: 'payout-schedule' } ], safety: [ - { - id: 'safety-features', - question: 'What safety features should I look for in a property?', - answer: 'We recommend booking properties with smoke detectors, carbon monoxide detectors, fire extinguishers, and first aid kits. You can filter for these safety features in your search, and they\'re listed on each property page under "Safety Features."' - }, - { - id: 'verify-identity', - question: 'How does Smart Rent verify user identities?', - answer: 'We use a combination of ID verification, email confirmation, phone verification, and payment information to verify user identities. Some bookings may require additional verification steps for enhanced security.' - }, - { - id: 'report-issues', - question: 'How do I report safety concerns or emergencies?', - answer: 'For immediate emergencies, always contact local emergency services first. After ensuring your safety, report the issue to us through the "Report Concern" page, the Help Center, or by calling our 24/7 emergency support line at +1 (800) SMART-RENT.' - }, - { - id: 'covid-protocols', - question: 'What COVID-19 safety measures are in place?', - answer: 'We encourage hosts to follow enhanced cleaning protocols, allow for sufficient time between guests, and provide contactless check-in options where possible. Many hosts display their specific COVID safety measures on their listing pages.' - } + { id: 'safety-features' }, + { id: 'verify-identity' }, + { id: 'report-issues' }, + { id: 'covid-protocols' } ], account: [ - { - id: 'create-account', - question: 'How do I create an account?', - answer: 'You can create an account by clicking "Sign Up" on our homepage. You\'ll need to provide your email address and create a password, or you can sign up using Google, Facebook, or Apple accounts for faster registration.' - }, - { - id: 'update-profile', - question: 'How do I update my profile information?', - answer: 'To update your profile, go to the "Account" section in the dropdown menu. From there, you can edit your personal information, update your profile photo, change your password, and manage notification preferences.' - }, - { - id: 'delete-account', - question: 'Can I delete my account?', - answer: 'Yes, you can delete your account by going to "Account Settings" and selecting "Delete Account" at the bottom of the page. Please note that this action is permanent and will remove all your data from our platform, including booking history and reviews.' - }, - { - id: 'privacy-settings', - question: 'How can I manage my privacy settings?', - answer: 'Privacy settings can be managed in the "Account" section under "Privacy." Here you can control what information is visible to others, manage your marketing preferences, and review data sharing options.' - } + { id: 'create-account' }, + { id: 'update-profile' }, + { id: 'delete-account' }, + { id: 'privacy-settings' } ] }; @@ -164,9 +70,9 @@ const FAQ = () => {
-

Frequently Asked Questions

+

{t('faqTitle')}

- Find answers to the most common questions about using Smart Rent System + {t('faqSubtitle')}

@@ -179,7 +85,7 @@ const FAQ = () => {
{/* Categories sidebar */}
-

Categories

+

{t('categoriesLabel')}

-

Need more help?

+

{t('needMoreHelp')}

- If you can't find what you're looking for, our support team is ready to assist. + {t('needMoreHelpDesc')}

- Contact Support + {t('contactSupport')} @@ -221,15 +127,15 @@ const FAQ = () => {
{faqData[activeCategory]?.map(faq => ( -
- {expandedFaqs[faq.id] && (
-

{faq.answer}

+

{t(`${activeCategory}.${faq.id}.answer`)}

)}
@@ -266,15 +171,15 @@ const FAQ = () => {
-

Help Center

+

{t('helpCenter')}

- Browse comprehensive help guides, tutorials, and troubleshooting tips for using Smart Rent. + {t('helpCenterDesc')}

- Visit Help Center + {t('visitHelpCenter')} @@ -287,15 +192,15 @@ const FAQ = () => {
-

Safety Information

+

{t('safetyInfo')}

- Learn about our safety protocols, guidelines for guests and hosts, and emergency resources. + {t('safetyInfoDesc')}

- View Safety Guidelines + {t('viewSafetyGuidelines')} @@ -308,15 +213,15 @@ const FAQ = () => {
-

Report a Concern

+

{t('reportConcernTitle')}

- Need to report a safety issue, policy violation, or other concern about a listing or user? + {t('reportConcernDesc')}

- Submit a Report + {t('submitReport')} diff --git a/frontend/src/pages/Help.jsx b/frontend/src/pages/Help.jsx index ab56690..6ca3825 100644 --- a/frontend/src/pages/Help.jsx +++ b/frontend/src/pages/Help.jsx @@ -1,7 +1,9 @@ import React, { useState } from "react"; import { Link } from "react-router-dom"; +import { useTranslation } from "react-i18next"; const Help = () => { + const { t } = useTranslation("Help"); const [searchQuery, setSearchQuery] = useState(""); const [activeCategory, setActiveCategory] = useState("general"); const [expandedFaqs, setExpandedFaqs] = useState({}); @@ -9,12 +11,12 @@ const Help = () => { // Mock data for help categories const categories = [ - { id: "general", name: "General" }, - { id: "account", name: "Account & Profile" }, - { id: "booking", name: "Booking & Reservations" }, - { id: "payment", name: "Payments & Refunds" }, - { id: "hosting", name: "Hosting" }, - { id: "safety", name: "Safety & Accessibility" }, + { id: "general", name: t("categoryGeneral", "General") }, + { id: "account", name: t("categoryAccount", "Account & Profile") }, + { id: "booking", name: t("categoryBooking", "Booking & Reservations") }, + { id: "payment", name: t("categoryPayment", "Payments & Refunds") }, + { id: "hosting", name: t("categoryHosting", "Hosting") }, + { id: "safety", name: t("categorySafety", "Safety & Accessibility") }, ]; // Mock data for FAQs @@ -22,91 +24,117 @@ const Help = () => { general: [ { id: "what-is-smart-rent", - question: "What is Smart Rent?", - answer: - "Smart Rent is a platform that connects property owners with travelers looking for unique and comfortable places to stay. Whether you're looking for a cozy apartment in the city or a beachfront villa, Smart Rent offers a wide range of properties to suit your needs and budget.", + question: t("faqWhatIsSmartRentQuestion", "What is Smart Rent?"), + answer: t( + "faqWhatIsSmartRentAnswer", + "Smart Rent is a platform that connects property owners with travelers looking for unique and comfortable places to stay. Whether you're looking for a cozy apartment in the city or a beachfront villa, Smart Rent offers a wide range of properties to suit your needs and budget." + ), }, { id: "how-to-use", - question: "How do I use Smart Rent?", - answer: - "Using Smart Rent is simple. Create an account, search for properties based on your destination and dates, browse through the options, and book the one that suits you best. You can also save properties to your wishlist, message hosts directly, and leave reviews after your stay.", + question: t("faqHowToUseQuestion", "How do I use Smart Rent?"), + answer: t( + "faqHowToUseAnswer", + "Using Smart Rent is simple. Create an account, search for properties based on your destination and dates, browse through the options, and book the one that suits you best. You can also save properties to your wishlist, message hosts directly, and leave reviews after your stay." + ), }, { id: "customer-service", - question: "How do I contact customer service?", - answer: - "You can contact our customer service team through various channels including email support at help@smartrent.com, our 24/7 live chat available on our website, or by phone at +1-800-SMART-RENT. We aim to respond to all inquiries within 24 hours.", + question: t("faqCustomerServiceQuestion", "How do I contact customer service?"), + answer: t( + "faqCustomerServiceAnswer", + "You can contact our customer service team through various channels including email support at help@smartrent.com, our 24/7 live chat available on our website, or by phone at +1-800-SMART-RENT. We aim to respond to all inquiries within 24 hours." + ), }, ], account: [ { id: "create-account", - question: "How do I create an account?", - answer: - 'To create an account, click on the "Sign up" button in the top right corner of our website or app. You can sign up using your email address, or continue with Google or Facebook. Fill in your details, agree to our terms of service, and you\'re ready to go!', + question: t("faqCreateAccountQuestion", "How do I create an account?"), + answer: t( + "faqCreateAccountAnswer", + 'To create an account, click on the "Sign up" button in the top right corner of our website or app. You can sign up using your email address, or continue with Google or Facebook. Fill in your details, agree to our terms of service, and you\'re ready to go!' + ), }, { id: "delete-account", - question: "Can I delete my account?", - answer: - 'Yes, you can delete your account at any time. Go to your Account Settings, scroll to the bottom of the page, and click on "Delete Account". Please note that this action is irreversible and will permanently remove all your data from our platform.', + question: t("faqDeleteAccountQuestion", "Can I delete my account?"), + answer: t( + "faqDeleteAccountAnswer", + 'Yes, you can delete your account at any time. Go to your Account Settings, scroll to the bottom of the page, and click on "Delete Account". Please note that this action is irreversible and will permanently remove all your data from our platform.' + ), }, ], booking: [ { id: "cancel-booking", - question: "How do I cancel a booking?", - answer: - 'To cancel a booking, go to your Trips page, find the reservation you want to cancel, and click on "Cancel Reservation". The refund amount depends on the property\'s cancellation policy and how close to the check-in date you are cancelling. Always check the cancellation policy before booking.', + question: t("faqCancelBookingQuestion", "How do I cancel a booking?"), + answer: t( + "faqCancelBookingAnswer", + 'To cancel a booking, go to your Trips page, find the reservation you want to cancel, and click on "Cancel Reservation". The refund amount depends on the property\'s cancellation policy and how close to the check-in date you are cancelling. Always check the cancellation policy before booking.' + ), }, { id: "modify-booking", - question: "Can I modify my booking dates?", - answer: - 'Yes, you can request to modify your booking dates. Go to your Trips page, find the reservation you want to modify, and click on "Change Reservation". Note that changes are subject to host approval and may result in price adjustments based on the new dates.', + question: t("faqModifyBookingQuestion", "Can I modify my booking dates?"), + answer: t( + "faqModifyBookingAnswer", + 'Yes, you can request to modify your booking dates. Go to your Trips page, find the reservation you want to modify, and click on "Change Reservation". Note that changes are subject to host approval and may result in price adjustments based on the new dates.' + ), }, ], payment: [ { id: "payment-methods", - question: "What payment methods do you accept?", - answer: - "We accept various payment methods including major credit cards (Visa, MasterCard, American Express), debit cards, PayPal, and in some regions, we also offer payment installments through services like Affirm or Klarna.", + question: t("faqPaymentMethodsQuestion", "What payment methods do you accept?"), + answer: t( + "faqPaymentMethodsAnswer", + "We accept various payment methods including major credit cards (Visa, MasterCard, American Express), debit cards, PayPal, and in some regions, we also offer payment installments through services like Affirm or Klarna." + ), }, { id: "refund-policy", - question: "What is your refund policy?", - answer: - "Our refund policy depends on the individual property's cancellation policy chosen by the host. These typically fall into three categories: Flexible, Moderate, and Strict. The specific refund amount is clearly displayed before you confirm your booking and in your trip details.", + question: t("faqRefundPolicyQuestion", "What is your refund policy?"), + answer: t( + "faqRefundPolicyAnswer", + "Our refund policy depends on the individual property's cancellation policy chosen by the host. These typically fall into three categories: Flexible, Moderate, and Strict. The specific refund amount is clearly displayed before you confirm your booking and in your trip details." + ), }, ], hosting: [ { id: "become-host", - question: "How do I become a host?", - answer: - 'To become a host, click on "Become a Host" in the top navigation menu. You\'ll need to create a listing with photos, description, and pricing details for your property. Our step-by-step guide will help you set up your listing and start welcoming guests.', + question: t("faqBecomeHostQuestion", "How do I become a host?"), + answer: t( + "faqBecomeHostAnswer", + 'To become a host, click on "Become a Host" in the top navigation menu. You\'ll need to create a listing with photos, description, and pricing details for your property. Our step-by-step guide will help you set up your listing and start welcoming guests.' + ), }, { id: "host-fees", - question: "What fees do hosts pay?", - answer: - "Hosts pay a service fee that is typically 3% of the booking subtotal. This fee covers the cost of processing payments and the services we provide to hosts, such as 24/7 customer support and marketing of your property to millions of potential guests.", + question: t("faqHostFeesQuestion", "What fees do hosts pay?"), + answer: t( + "faqHostFeesAnswer", + "Hosts pay a service fee that is typically 3% of the booking subtotal. This fee covers the cost of processing payments and the services we provide to hosts, such as 24/7 customer support and marketing of your property to millions of potential guests." + ), }, ], safety: [ { id: "covid-measures", - question: "What COVID-19 safety measures are in place?", - answer: - "We encourage hosts to follow enhanced cleaning protocols developed with health experts. Many properties have implemented additional safety measures, which are displayed on the listing page. We also have flexible cancellation options related to COVID-19 circumstances.", + question: t("faqCovidMeasuresQuestion", "What COVID-19 safety measures are in place?"), + answer: t( + "faqCovidMeasuresAnswer", + "We encourage hosts to follow enhanced cleaning protocols developed with health experts. Many properties have implemented additional safety measures, which are displayed on the listing page. We also have flexible cancellation options related to COVID-19 circumstances." + ), }, { id: "accessibility", - question: "How can I find accessible properties?", - answer: - "You can use our accessibility filters when searching for properties to find ones that match your specific needs. Hosts can list various accessibility features such as step-free access, wide doorways, accessible parking, and more.", + question: t("faqAccessibilityQuestion", "How can I find accessible properties?"), + answer: t( + "faqAccessibilityAnswer", + "You can use our accessibility filters when searching for properties to find ones that match your specific needs. Hosts can list various accessibility features such as step-free access, wide doorways, accessible parking, and more." + ), }, ], }; @@ -131,33 +159,36 @@ const Help = () => { return (

- Help Guides + {t("helpGuidesTitle", "Help Guides")}

- Detailed guides on how to use Smart Rent features and services. + {t( + "helpGuidesDescription", + "Detailed guides on how to use Smart Rent features and services." + )}

- Getting Started + {t("gettingStarted", "Getting Started")}

@@ -165,22 +196,22 @@ const Help = () => {

- Hosting + {t("hosting", "Hosting")}

@@ -188,22 +219,22 @@ const Help = () => {

- Payments & Security + {t("paymentsAndSecurity", "Payments & Security")}

@@ -215,7 +246,7 @@ const Help = () => { onClick={() => setActiveTab("main")} className="inline-flex items-center px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-primary-600 hover:bg-primary-700" > - Back to Help Center + {t("backToHelpCenter", "Back to Help Center")}
@@ -225,10 +256,10 @@ const Help = () => { return (

- Contact Support + {t("contactSupport", "Contact Support")}

- Our support team is here to help you with any issues or questions. + {t("contactSupportDescription", "Our support team is here to help you with any issues or questions.")}

@@ -238,13 +269,13 @@ const Help = () => { htmlFor="name" className="block text-sm font-medium text-neutral-700 mb-1" > - Your Name + {t("yourName", "Your Name")}
@@ -253,13 +284,13 @@ const Help = () => { htmlFor="email" className="block text-sm font-medium text-neutral-700 mb-1" > - Email Address + {t("emailAddress", "Email Address")}
@@ -268,18 +299,18 @@ const Help = () => { htmlFor="subject" className="block text-sm font-medium text-neutral-700 mb-1" > - Subject + {t("subject", "Subject")}
@@ -288,13 +319,13 @@ const Help = () => { htmlFor="message" className="block text-sm font-medium text-neutral-700 mb-1" > - Message + {t("message", "Message")}
@@ -303,7 +334,7 @@ const Help = () => { type="submit" className="w-full px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-primary-600 hover:bg-primary-700" > - Submit Request + {t("submitRequest", "Submit Request")}
@@ -314,7 +345,7 @@ const Help = () => { onClick={() => setActiveTab("main")} className="inline-flex items-center px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-primary-600 hover:bg-primary-700" > - Back to Help Center + {t("backToHelpCenter", "Back to Help Center")}
@@ -324,11 +355,10 @@ const Help = () => { return (

- Community Forum + {t("communityForum", "Community Forum")}

- Connect with other users, share experiences, and get advice from - the community. + {t("forumDescription", "Connect with other users, share experiences, and get advice from the community.")}

@@ -347,17 +377,19 @@ const Help = () => { />

- Coming Soon! + {t("comingSoon", "Coming Soon!")}

- Our community forum is currently in development. Check back soon - to join discussions with other Smart Rent users! + {t( + "forumComingSoonDescription", + "Our community forum is currently in development. Check back soon to join discussions with other Smart Rent users!" + )}

@@ -370,17 +402,17 @@ const Help = () => {

- How can we help you? + {t("howCanWeHelpYou", "How can we help you?")}

- Find answers to your questions or contact our support team + {t("findAnswersOrContactSupport", "Find answers to your questions or contact our support team")}

setSearchQuery(e.target.value)} className="w-full px-5 py-4 rounded-full text-neutral-800 focus:outline-none focus:ring-2 focus:ring-primary-500 border-none" @@ -429,35 +461,35 @@ const Help = () => {

- Help Guides + {t("helpGuides", "Help Guides")}

- Detailed guides on how to use Smart Rent features + {t("helpGuidesDescription", "Detailed guides on how to use Smart Rent features")}

- Safety Information + {t("safetyInformation", "Safety Information")} - Cancellation Policies + {t("cancellationPolicies", "Cancellation Policies")} - Report a Concern + {t("reportAConcern", "Report a Concern")}
@@ -480,16 +512,16 @@ const Help = () => {

- Contact Support + {t("contactSupport", "Contact Support")}

- Get in touch with our customer support team + {t("contactSupportDescription", "Get in touch with our customer support team")}

@@ -511,16 +543,16 @@ const Help = () => {

- Community Forum + {t("communityForum", "Community Forum")}

- Connect with other users and share your experiences + {t("connectWithOtherUsers", "Connect with other users and share your experiences")}

@@ -528,7 +560,7 @@ const Help = () => { {/* FAQs */}

- Frequently Asked Questions + {t("frequentlyAskedQuestions", "Frequently Asked Questions")}

@@ -599,13 +631,13 @@ const Help = () => {

- Can't find what you're looking for? + {t("cantFindWhatYouAreLookingFor", "Can't find what you're looking for?")}

@@ -633,12 +665,11 @@ const Help = () => {

- Email Support + {t("emailSupport", "Email Support")}

- Our email support team is available 24/7 to assist you with - any questions or issues. + {t("emailSupportDescription", "Our email support team is available 24/7 to assist you with any questions or issues.")}

{

- Phone Support + {t("phoneSupport", "Phone Support")}

- Call our customer service team for immediate assistance during - business hours. + {t("phoneSupportDescription", "Call our customer service team for immediate assistance during business hours.")}

{ +1 (800) SMART-RENT

- Available Monday-Friday, 9am-6pm EST + {t("availableMondayToFriday", "Available Monday-Friday, 9am-6pm EST")}

@@ -704,17 +734,18 @@ const Help = () => {

- Live Chat + {t("liveChat", "Live Chat")}

- Chat with our support team in real-time for quick assistance - with your questions. + {t("liveChatDescription", "Chat with our support team in real-time for quick assistance with your questions.")}

-

Available 24/7

+

+ {t("available247", "Available 24/7")} +

diff --git a/frontend/src/pages/Home.jsx b/frontend/src/pages/Home.jsx index 208de4c..6106242 100644 --- a/frontend/src/pages/Home.jsx +++ b/frontend/src/pages/Home.jsx @@ -1,7 +1,9 @@ import React, { useState, useEffect, useRef } from "react"; import { Link, useNavigate } from "react-router-dom"; +import { useTranslation, Trans } from "react-i18next"; const Home = () => { + const { t } = useTranslation('Home'); // State for search query input value const [searchQuery, setSearchQuery] = useState(""); // State to track if search dropdown is open/focused @@ -77,31 +79,31 @@ const Home = () => { const destinations = [ { id: 1, - name: "New York", + name: t('newYork'), image: "https://images.unsplash.com/photo-1496442226666-8d4d0e62e6e9?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80", - properties: 120, + properties: t('newYorkProperties'), }, { id: 2, - name: "Los Angeles", + name: t('losAngeles'), image: "https://images.unsplash.com/photo-1534190760961-74e8c1c5c3da?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80", - properties: 94, + properties: t('losAngelesProperties'), }, { id: 3, - name: "Miami", + name: t('miami'), image: "https://images.unsplash.com/photo-1535498730771-e735b998cd64?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80", - properties: 85, + properties: t('miamiProperties'), }, { id: 4, - name: "Chicago", + name: t('chicago'), image: "https://images.unsplash.com/photo-1494522855154-9297ac14b55f?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=1350&q=80", - properties: 73, + properties: t('chicagoProperties'), }, ]; @@ -149,13 +151,13 @@ const Home = () => {

- Find stays that feel{" "} - like home + + Find stays that feel like home +

- Discover unique homes, apartments, and experiences across the - world — handpicked for comfort, style, and unforgettable memories. + {t('heroDescription')}

{/* CTA Buttons */} @@ -164,14 +166,14 @@ const Home = () => { to="/listings" className="bg-primary-500 hover:bg-primary-600 text-white px-7 py-3 rounded-xl font-medium transition duration-300 shadow-lg" > - Explore stays + {t('exploreStays')} - Become a host + {t('becomeHost')}
@@ -181,10 +183,10 @@ const Home = () => { {/* Featured destinations section */}

- Inspiration for your next trip + {t('inspirationTitle')}

- Explore top destinations with perfect vacation rentals + {t('inspirationSubtitle')}

{/* Featured destinations grid */} @@ -216,10 +218,10 @@ const Home = () => {

- Stay anywhere + {t('stayAnywhereTitle')}

- Unique accommodations for every style and budget + {t('stayAnywhereSubtitle')}

{/* Property types grid */} @@ -236,9 +238,9 @@ const Home = () => {

- Apartments + {t('apartments')}

-

Urban comfort

+

{t('apartmentsDesc')}

@@ -254,9 +256,9 @@ const Home = () => {

- Houses + {t('houses')}

-

Entire homes

+

{t('housesDesc')}

@@ -272,9 +274,9 @@ const Home = () => {

- Cabins + {t('cabins')}

-

Rustic retreats

+

{t('cabinsDesc')}

@@ -290,9 +292,9 @@ const Home = () => {

- Villas + {t('villas')}

-

Luxury stays

+

{t('villasDesc')}

@@ -303,10 +305,10 @@ const Home = () => { {/* Experiences section */}

- Discover experiences + {t('discoverExperiencesTitle')}

- Find activities hosted by local experts + {t('discoverExperiencesSubtitle')}

{/* Experiences grid */} @@ -321,15 +323,15 @@ const Home = () => {
{experience.title}

- {experience.title} + {t(experience.slug)}

-

Explore with local guides

+

{t(`${experience.slug}Desc`)}

@@ -344,24 +346,23 @@ const Home = () => {

- Become a host + {t('becomeAHostTitle')}

- Share your space, earn extra income, and connect with guests - from around the world. + {t('becomeAHostDesc')}

{/* Learn more button for host sign-up */} - Learn more + {t('learnMore')}
Become a host
diff --git a/frontend/src/pages/Login.jsx b/frontend/src/pages/Login.jsx index dadbd2e..36876d0 100644 --- a/frontend/src/pages/Login.jsx +++ b/frontend/src/pages/Login.jsx @@ -1,6 +1,7 @@ import React, { useState, useEffect } from "react"; import { Link, useNavigate, useLocation } from "react-router-dom"; import { useAuth } from "../contexts/AuthContext"; +import { useTranslation } from "react-i18next"; /** * Login Component @@ -8,6 +9,7 @@ import { useAuth } from "../contexts/AuthContext"; * Features: Login, password reset, form validation, show/hide password */ const Login = () => { + const { t } = useTranslation("Login"); // State for form data and UI controls const [formData, setFormData] = useState({ email: "", @@ -181,28 +183,29 @@ const Login = () => {

{showForgotPassword - ? "Reset your password" - : "Log in to your account"} + ? t("resetPasswordTitle", "Reset your password") + : t("loginTitle")}

{showForgotPassword ? ( <> - Remember your password?{" "} + {t("rememberPassword", "Remember your password?")}{" "} ) : ( <> - Or{" "} + {t("createAccount", "Or create a new account")} + {" "} - create a new account + {t("createAccountLink", "create a new account")} )} @@ -254,7 +257,7 @@ const Login = () => { htmlFor="resetEmail" className="block text-sm font-medium text-neutral-700" > - Email address + {t("email", "Email address")}

{ disabled={loading} className="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500" > - {loading ? "Sending..." : "Send reset link"} + {loading ? t("sending", "Sending...") : t("sendResetLink", "Send reset link")}
@@ -289,7 +292,7 @@ const Login = () => { htmlFor="email" className="block text-sm font-medium text-neutral-700" > - Email address + {t("email", "Email address")}
{ htmlFor="password" className="block text-sm font-medium text-neutral-700" > - Password + {t("password", "Password")}
{ htmlFor="remember_me" className="ml-2 block text-sm text-neutral-700" > - Remember me + {t("rememberMe", "Remember me")}
@@ -389,9 +392,7 @@ const Login = () => { type="button" onClick={() => { if (!formData.email || formData.email.trim() === "") { - setError( - "Please enter your email address before requesting a password reset." - ); + setError(t("enterEmailForReset", "Please enter your email address before requesting a password reset.")); } else { setShowForgotPassword(true); setResetEmail(formData.email); // Pre-populate the reset email field with the login email @@ -399,7 +400,7 @@ const Login = () => { }} className="font-medium text-primary-600 hover:text-primary-500" > - Forgot your password? + {t("forgotPassword", "Forgot your password?")}
@@ -411,7 +412,7 @@ const Login = () => { disabled={loading} className="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500" > - {loading ? "Logging in..." : "Log in"} + {loading ? t("loggingIn", "Logging in...") : t("login", "Log in")}
@@ -425,7 +426,7 @@ const Login = () => {
- Or continue with + {t("orContinueWith", "Or continue with")}
@@ -440,7 +441,7 @@ const Login = () => { disabled={socialLoading !== ""} className="w-full inline-flex justify-center py-2 px-4 border border-neutral-300 rounded-md shadow-sm bg-white text-sm font-medium text-neutral-700 hover:bg-neutral-50" > - Sign in with Google + {t("signInWithGoogle", "Sign in with Google")} {socialLoading === "google" ? ( ) : ( diff --git a/frontend/src/pages/Register.jsx b/frontend/src/pages/Register.jsx index 4deecd6..e47ff97 100644 --- a/frontend/src/pages/Register.jsx +++ b/frontend/src/pages/Register.jsx @@ -1,6 +1,7 @@ import React, { useState, useEffect } from "react"; import { Link, useNavigate, useLocation } from "react-router-dom"; import { useAuth } from "../contexts/AuthContext"; +import { useTranslation } from "react-i18next"; /** * Register Component @@ -13,6 +14,7 @@ import { useAuth } from "../contexts/AuthContext"; * - Optional username creation */ const Register = () => { + const { t } = useTranslation("Register"); // Form state management const [formData, setFormData] = useState({ firstName: "", @@ -147,15 +149,15 @@ const Register = () => { {/* Header section with title and link to login */}

- Create your account + {t("registerTitle")}

- Or{" "} + {t("signInToExisting", "Or sign in to your existing account")} {" "} - sign in to your existing account + {t("signInToExistingLink", "sign in to your existing account")}

@@ -179,7 +181,7 @@ const Register = () => { htmlFor="firstName" className="block text-sm font-medium text-neutral-700" > - First name + {t("firstName", "First name")}
{ htmlFor="lastName" className="block text-sm font-medium text-neutral-700" > - Last name + {t("lastName", "Last name")}
{ htmlFor="username" className="block text-sm font-medium text-neutral-700" > - Username (optional) + {t("username", "Username (optional)")}
{ value={formData.username} onChange={handleChange} className="appearance-none block w-full px-3 py-2 border border-neutral-300 rounded-md shadow-sm placeholder-neutral-400 focus:outline-none focus:ring-primary-500 focus:border-primary-500 sm:text-sm" - placeholder="Will use part of your email if left blank" + placeholder={t("usernameHint", "Will use part of your email if left blank")} />
@@ -245,7 +247,7 @@ const Register = () => { htmlFor="email" className="block text-sm font-medium text-neutral-700" > - Email address + {t("email", "Email address")}
{ htmlFor="password" className="block text-sm font-medium text-neutral-700" > - Password + {t("password", "Password")}
{ htmlFor="confirmPassword" className="block text-sm font-medium text-neutral-700" > - Confirm password + {t("confirmPassword", "Confirm password")}
{ htmlFor="terms" className="ml-2 block text-sm text-neutral-700" > - I agree to the{" "} - - Terms of Service - {" "} - and{" "} - - Privacy Policy - + {t("agreeTerms", "I agree to the Terms of Service and Privacy Policy")}
@@ -412,7 +401,7 @@ const Register = () => { disabled={loading} className="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-primary-600 hover:bg-primary-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500" > - {loading ? "Creating account..." : "Create account"} + {loading ? t("creatingAccount", "Creating account...") : t("register", "Create account")}
@@ -425,7 +414,7 @@ const Register = () => {
- Or continue with + {t("orContinueWith", "Or continue with")}
@@ -440,7 +429,7 @@ const Register = () => { disabled={loading} className="w-full inline-flex justify-center py-2 px-4 border border-neutral-300 rounded-md shadow-sm bg-white text-sm font-medium text-neutral-700 hover:bg-neutral-50" > - Sign up with Google + {t("signUpWithGoogle", "Sign up with Google")} { disabled={loading} className="w-full inline-flex justify-center py-2 px-4 border border-neutral-300 rounded-md shadow-sm bg-white text-sm font-medium text-neutral-700 hover:bg-neutral-50" > - Sign up with Facebook + {t("signUpWithFacebook", "Sign up with Facebook")} { const [formData, setFormData] = useState({ @@ -14,16 +15,12 @@ const ReportConcern = () => { const [isSubmitted, setIsSubmitted] = useState(false); - const concernTypes = [ - { id: 'safety', name: 'Safety Concern' }, - { id: 'fraud', name: 'Potential Fraud' }, - { id: 'scam', name: 'Scam or Misleading Listing' }, - { id: 'discrimination', name: 'Discrimination' }, - { id: 'property', name: 'Property Damage' }, - { id: 'accessibility', name: 'Accessibility Issue' }, - { id: 'account', name: 'Account Security' }, - { id: 'other', name: 'Other Concern' }, - ]; + const { t } = useTranslation('ReportConcern'); + + let concernTypes = t('concernTypes', { returnObjects: true }); + if (!Array.isArray(concernTypes)) { + concernTypes = []; + } const handleChange = (e) => { const { name, value } = e.target; @@ -54,10 +51,8 @@ const ReportConcern = () => {
-

Report a Concern

-

- Your safety and satisfaction are our priority. Let us know about any issues or concerns. -

+

{t('title')}

+

{t('subtitle')}

@@ -72,19 +67,17 @@ const ReportConcern = () => { -

Thank You for Your Report

-

- We've received your concern and will review it promptly. Our team will reach out to you via email if we need additional information. -

+

{t('thankYouTitle')}

+

{t('thankYouMsg1')}

- Reference Number: {`RC${Date.now().toString().substring(6)}`} + {t('thankYouMsg2')} {`RC${Date.now().toString().substring(6)}`}

- Return to Home + {t('returnHome')} - Visit Help Center + {t('visitHelp')}
@@ -92,28 +85,26 @@ const ReportConcern = () => { <> {/* Introduction */}
-

How to Report a Concern

-

- We take all reports seriously and will investigate each one thoroughly. Please provide as much detail as possible to help us address your concern efficiently. -

+

{t('howToTitle')}

+

{t('howToDesc')}

- For emergencies: If you're experiencing an emergency situation, please contact local emergency services immediately by dialing your local emergency number. + {t('emergency')} {t('emergencyDesc')}

{/* Report Form */}
-

Submit Your Report

+

{t('submitTitle')}

{/* Concern Type */}
@@ -133,7 +124,7 @@ const ReportConcern = () => { {/* Listing ID */}
{ name="listingId" value={formData.listingId} onChange={handleChange} - placeholder="e.g., LIST12345 or RES67890" + placeholder={t('listingIdPlaceholder')} className="w-full px-4 py-3 rounded-lg border border-neutral-300 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent" />

- This helps us identify the specific listing or reservation your concern relates to. + {t('listingIdHelp')}

{/* Description */}
@@ -169,7 +160,7 @@ const ReportConcern = () => { {/* File Attachments */}
@@ -178,20 +169,23 @@ const ReportConcern = () => {
-

or drag and drop

+ {t('attachmentsUpload')} + + +

{t('attachmentsOr')}

+ + {formData.attachments.length === 0 ? t('attachmentsUploadNoFile', 'No file chosen') : ''} +

- PNG, JPG, PDF up to 10MB + {t('attachmentsHelp')}

@@ -211,11 +205,11 @@ const ReportConcern = () => { {/* Contact Info */}
-

Your Contact Information

+

{t('contactTitle')}

{
{
{
@@ -283,7 +279,7 @@ const ReportConcern = () => { type="submit" className="px-6 py-3 bg-primary-600 text-white rounded-lg font-medium hover:bg-primary-700 transition duration-300" > - Submit Report + {t('submitBtn')}
@@ -293,7 +289,7 @@ const ReportConcern = () => { {/* Additional Resources */}
-

Additional Resources

+

{t('additionalResources')}

{
-

Safety Information

-

Learn about our safety guidelines and protocols for guests and hosts.

+

{t('safetyInfoTitle')}

+

{t('safetyInfoDesc')}

{
-

Help Center

-

Browse our frequently asked questions and help guides.

+

{t('helpCenterTitle')}

+

{t('helpCenterDesc')}

{
-

Contact Support

-

Get in touch with our customer support team.

+

{t('contactSupportTitle')}

+

{t('contactSupportDesc')}

{
-

Emergency Line

-

Call our emergency support line for urgent matters.

+

{t('emergencyLineTitle')}

+

{t('emergencyLineDesc')}

diff --git a/frontend/src/pages/Safety.jsx b/frontend/src/pages/Safety.jsx index 6ff33c2..685925c 100644 --- a/frontend/src/pages/Safety.jsx +++ b/frontend/src/pages/Safety.jsx @@ -1,16 +1,18 @@ import React from 'react'; import { Link } from 'react-router-dom'; +import { useTranslation } from 'react-i18next'; const Safety = () => { + const { t } = useTranslation('Safety'); return (
{/* Header Section */}
-

Your Safety Matters

+

{t('headerTitle')}

- Smart Rent System is committed to creating a safe environment for our hosts and guests + {t('headerSubtitle')}

@@ -21,60 +23,44 @@ const Safety = () => {
{/* Introduction */}
-

Our Commitment to Safety

+

{t('commitmentTitle')}

- At Smart Rent System, we prioritize the safety and well-being of our community. - We've implemented comprehensive safety measures, verification processes, and - support systems to ensure that both hosts and guests can use our platform with - confidence and peace of mind. + {t('commitmentDesc1')}

- This page provides information about our safety practices, emergency resources, - and guidelines to help you stay safe while using our services. + {t('commitmentDesc2')}

{/* Safety Features */}
-

Key Safety Features

- +

{t('featuresTitle')}

- - - + {/* ...existing code... */}
-

Verified Profiles

+

{t('featureVerifiedTitle')}

- All users undergo identity verification before they can book or host. - This helps ensure that our community members are who they say they are. + {t('featureVerifiedDesc')}

-
- - - + {/* ...existing code... */}
-

Property Standards

+

{t('featurePropertyTitle')}

- Properties listed on our platform must meet basic safety requirements - including functional smoke and carbon monoxide detectors. + {t('featurePropertyDesc')}

-
- - - + {/* ...existing code... */}
-

24/7 Support

+

{t('featureSupportTitle')}

- Our customer support team is available around the clock to assist with - any safety concerns or emergencies that may arise. + {t('featureSupportDesc')}

@@ -82,103 +68,46 @@ const Safety = () => { {/* Safety Tips */}
-

Safety Tips

- +

{t('tipsTitle')}

-

For Guests

+

{t('tipsGuestsTitle')}

    -
  • - - - - Review property details carefully, including safety features and house rules. -
  • -
  • - - - - Read reviews from previous guests to get insights about the property and host. -
  • -
  • - - - - Keep communication within the Smart Rent System platform for your protection. -
  • -
  • - - - - Familiarize yourself with emergency exits and safety equipment upon arrival. -
  • -
  • - - - - Share your itinerary with a trusted friend or family member. -
  • +
  • {/* ...existing code... */}{t('tipsGuests1')}
  • +
  • {/* ...existing code... */}{t('tipsGuests2')}
  • +
  • {/* ...existing code... */}{t('tipsGuests3')}
  • +
  • {/* ...existing code... */}{t('tipsGuests4')}
  • +
  • {/* ...existing code... */}{t('tipsGuests5')}
-
-

For Hosts

+

{t('tipsHostsTitle')}

    -
  • - - - - Install and maintain smoke detectors, carbon monoxide detectors, and fire extinguishers. -
  • -
  • - - - - Provide clear check-in instructions and emergency contact information. -
  • -
  • - - - - Ensure proper locks on all doors and windows, including bedrooms. -
  • -
  • - - - - Create and display an emergency guide with local medical facilities and emergency numbers. -
  • -
  • - - - - Screen guests by reviewing their profiles and communication before accepting bookings. -
  • +
  • {/* ...existing code... */}{t('tipsHosts1')}
  • +
  • {/* ...existing code... */}{t('tipsHosts2')}
  • +
  • {/* ...existing code... */}{t('tipsHosts3')}
  • +
  • {/* ...existing code... */}{t('tipsHosts4')}
  • +
  • {/* ...existing code... */}{t('tipsHosts5')}
{/* COVID-19 Safety Measures */}
-

COVID-19 Safety Measures

+

{t('covidTitle')}

- While many regions have eased COVID-19 restrictions, we continue to encourage safety practices - that help protect our community: + {t('covidDesc')}

-
-

Enhanced Cleaning Protocol

+

{t('covidCleaningTitle')}

- We recommend that hosts follow enhanced cleaning procedures between guests, - including disinfecting high-touch surfaces and providing hand sanitizer when possible. + {t('covidCleaningDesc')}

-
-

Flexible Booking Options

+

{t('covidFlexibleTitle')}

- Many properties offer flexible cancellation policies to accommodate unexpected - changes in travel plans due to health concerns. + {t('covidFlexibleDesc')}

@@ -186,30 +115,28 @@ const Safety = () => { {/* Emergency Resources */}
-

Emergency Resources

- +

{t('emergencyTitle')}

-

Immediate Emergency

+

{t('emergencyImmediateTitle')}

- For any life-threatening emergency, contact local emergency services immediately: + {t('emergencyImmediateDesc')}

-

911

-

(or appropriate emergency number for your location)

+

{t('emergencyNumber')}

+

{t('emergencyNumberNote')}

-
-

Smart Rent System Urgent Support

+

{t('emergencySupportTitle')}

- For urgent situations that aren't life-threatening but require immediate assistance: + {t('emergencySupportDesc')}

-

Urgent Support Line

-

+1 (888) 555-0123

+

{t('emergencySupportLineLabel')}

+

{t('emergencySupportLine')}

-

Safety Email

-

safety@smartrent.com

+

{t('emergencySupportEmailLabel')}

+

{t('emergencySupportEmail')}

@@ -217,25 +144,22 @@ const Safety = () => { {/* Reporting Concerns */}
-

Reporting Safety Concerns

+

{t('reportTitle')}

- If you encounter a safety issue or have concerns about a booking or listing, - we encourage you to report it to us immediately. Your reports help us maintain - a safe platform for everyone. + {t('reportDesc')}

-
- Contact Support + {t('reportContactSupport')} - Visit Help Center + {t('reportVisitHelpCenter')}
diff --git a/frontend/src/pages/Terms.jsx b/frontend/src/pages/Terms.jsx index 2ea6dba..e2a6605 100644 --- a/frontend/src/pages/Terms.jsx +++ b/frontend/src/pages/Terms.jsx @@ -1,8 +1,9 @@ import React from 'react'; import { Link } from 'react-router-dom'; +import { useTranslation, Trans } from 'react-i18next'; const Terms = () => { - const lastUpdated = "November 15, 2023"; + const { t } = useTranslation('Terms'); return (
@@ -10,10 +11,8 @@ const Terms = () => {
-

Terms of Service

-

- The rules and guidelines for using Smart Rent System -

+

{t('termsTitle')}

+

{t('termsSubtitle')}

@@ -23,116 +22,75 @@ const Terms = () => {
-

Last Updated: {lastUpdated}

- -

- Welcome to Smart Rent System. These Terms of Service govern your access to and use of the Smart Rent System website, apps, and services. By accessing or using our service, you agree to be bound by these terms. -

+

{t('lastUpdated')}

-

1. Acceptance of Terms

-

- By registering for and/or using the Service in any manner, you agree to these Terms and all other operating rules, policies, and procedures that may be published by Smart Rent System. These Terms apply to all users of the Service, including hosts, guests, and general visitors. -

+

{t('welcome')}

-

2. Account Registration

-

- To access certain features of the Service, you must register for an account. When you register, you agree to: -

+

{t('acceptanceTitle')}

+

{t('acceptance')}

+ +

{t('accountTitle')}

+

{t('account')}

    -
  • Provide accurate, current, and complete information
  • -
  • Maintain and promptly update your account information
  • -
  • Maintain the security of your account and password
  • -
  • Accept all risks of unauthorized access to your account
  • -
  • Notify us immediately of any unauthorized use of your account
  • + {t('accountList', { returnObjects: true }).map((item, idx) => ( +
  • {item}
  • + ))}
-

- We reserve the right to refuse service, terminate accounts, or remove content in our sole discretion. -

+

{t('accountNote')}

-

3. Content and Conduct

-

- Our Service allows you to post, link, store, share, and otherwise make available certain information, text, graphics, videos, or other material. You are responsible for the content you post and the consequences of sharing it. By posting content, you represent that you have the necessary rights to that content. -

-

- You agree not to use the Service to: -

+

{t('contentTitle')}

+

{t('content')}

+

{t('contentConduct')}

    -
  • Post illegal, harmful, threatening, abusive, or discriminatory content
  • -
  • Impersonate any person or entity
  • -
  • Falsely state or misrepresent your affiliation with a person or entity
  • -
  • Post private or confidential information of others without permission
  • -
  • Engage in any conduct that restricts or inhibits anyone's use or enjoyment of the Service
  • -
  • Use the Service for any illegal purpose or in violation of any laws
  • -
  • Upload viruses or other malicious code
  • -
  • Attempt to circumvent any security features of the Service
  • + {t('contentList', { returnObjects: true }).map((item, idx) => ( +
  • {item}
  • + ))}
-

4. Bookings and Reservations

-

- As a guest, when you make a booking, you agree to: -

+

{t('bookingTitle')}

+

{t('bookingGuest')}

    -
  • Pay all fees, applicable taxes, and any other charges related to your booking
  • -
  • Be responsible for your conduct during your stay
  • -
  • Adhere to the host's house rules and checkout procedures
  • -
  • Leave the property in the same condition as when you arrived
  • -
  • Report any damage or issues promptly
  • + {t('bookingGuestList', { returnObjects: true }).map((item, idx) => ( +
  • {item}
  • + ))}
-

- As a host, when you list your property, you agree to: -

+

{t('bookingHost')}

    -
  • Provide accurate and complete information about your space
  • -
  • Maintain your property in a safe and clean condition
  • -
  • Respond to booking requests in a timely manner
  • -
  • Honor confirmed bookings
  • -
  • Comply with all applicable laws, including tax, zoning, and safety regulations
  • + {t('bookingHostList', { returnObjects: true }).map((item, idx) => ( +
  • {item}
  • + ))}
-

5. Cancellations and Refunds

+

{t('cancellationTitle')}

+

{t('cancellation')}

- Cancellations and refunds are handled according to the specific cancellation policy selected by the host for their listing. This policy is displayed on each listing prior to booking. By completing a booking, guests acknowledge and agree to the host's cancellation policy. -

-

- For more information, please refer to our Cancellation Policy. + + For more information, see our Cancellation Policy. +

-

6. Fees and Payments

-

- Smart Rent System charges service fees to both guests and hosts for use of the platform. These fees are calculated as a percentage of the booking subtotal and are clearly displayed before checkout. By using our Service, you agree to pay all applicable fees. All payments are processed securely through our platform. -

+

{t('feesTitle')}

+

{t('fees')}

-

7. Disclaimers and Limitations of Liability

-

- The Service is provided on an "as is" and "as available" basis. Smart Rent System expressly disclaims all warranties of any kind, whether express or implied, including but not limited to implied warranties of merchantability, fitness for a particular purpose, and non-infringement. -

-

- In no event shall Smart Rent System be liable for any indirect, incidental, special, consequential or punitive damages, including without limitation, loss of profits, data, use, goodwill, or other intangible losses, resulting from your access to or use of or inability to access or use the Service. -

+

{t('disclaimerTitle')}

+

{t('disclaimer')}

+

{t('liability')}

-

8. Indemnification

-

- You agree to defend, indemnify, and hold harmless Smart Rent System, its officers, directors, employees, and agents, from and against any claims, liabilities, damages, losses, and expenses, including without limitation reasonable attorney's fees and costs, arising out of or in any way connected with your access to or use of the Service, your violation of these Terms, or your violation of any rights of another. -

+

{t('indemnificationTitle')}

+

{t('indemnification')}

-

9. Modifications to Terms

-

- We reserve the right to modify these Terms at any time. If we make changes, we will provide notice by posting the updated Terms on our website and updating the "Last Updated" date. Your continued use of the Service after such notice constitutes your acceptance of the new Terms. -

+

{t('modificationsTitle')}

+

{t('modifications')}

-

10. Governing Law

-

- These Terms shall be governed by and construed in accordance with the laws of [Jurisdiction], without regard to its conflict of law provisions. You agree to submit to the personal and exclusive jurisdiction of the courts located within [Jurisdiction]. -

+

{t('lawTitle')}

+

{t('law')}

-

11. Contact Information

-

- If you have any questions about these Terms, please contact us at: -

+

{t('contactTitle')}

+

{t('contact')}

-

Email: legal@smartrentsystem.com

-

Postal Address: 123 Rent Street, City, Country

-

Phone: +1 (123) 456-7890

+

{t('email').split(':')[0]}: {t('email').split(':')[1]}

+

{t('address').split(':')[0]}: {t('address').split(':')[1]}

+

{t('phone').split(':')[0]}: {t('phone').split(':')[1]}

@@ -143,44 +101,36 @@ const Terms = () => { to="/privacy" className="bg-white rounded-lg shadow-sm p-6 border border-neutral-200 hover:border-primary-500 transition duration-300" > -

Privacy Policy

-

- Learn how we collect, use, and protect your information. -

+

{t('privacy')}

+

{t('privacyDesc')}

- Read Privacy Policy + {t('readPrivacy')} - -

Cookie Policy

-

- Learn how we use cookies and similar technologies on our website. -

+

{t('cookie')}

+

{t('cookieDesc')}

- Read Cookie Policy + {t('readCookie')} - -

Help Center

-

- Find answers to common questions about our terms and policies. -

+

{t('help')}

+

{t('helpDesc')}

- Visit Help Center + {t('visitHelp')} From 5669ccba54f51f47c7d36852ef26fd4689a33a4c Mon Sep 17 00:00:00 2001 From: AnimeshRajwar Date: Mon, 5 Jan 2026 01:17:03 +0530 Subject: [PATCH 2/2] msg: issue-55 --- frontend/src/locales/ru/FAQ.json | 79 +++++++++++----- frontend/src/locales/zh/FAQ.json | 60 ++++++++++-- frontend/src/pages/Account.jsx | 139 +++++++++++++++++++++++++++- frontend/src/pages/Cancellation.jsx | 8 +- frontend/src/pages/Register.jsx | 6 +- frontend/src/pages/Safety.jsx | 126 ++++++++++++++++++------- frontend/src/pages/Terms.jsx | 6 +- 7 files changed, 347 insertions(+), 77 deletions(-) diff --git a/frontend/src/locales/ru/FAQ.json b/frontend/src/locales/ru/FAQ.json index 1db2b6b..73b4d1a 100644 --- a/frontend/src/locales/ru/FAQ.json +++ b/frontend/src/locales/ru/FAQ.json @@ -1,6 +1,7 @@ { "faqTitle": "Часто задаваемые вопросы", "faqSubtitle": "Найдите ответы на самые распространённые вопросы о Smart Rent System", + "categoriesLabel": "Категории", "categories": { "general": "Общие вопросы", "booking": "Бронирование и аренда", @@ -9,30 +10,58 @@ "safety": "Безопасность", "account": "Управление аккаунтом" }, - "needMoreHelp": "Нужна дополнительная помощь?", - "needMoreHelpDesc": "Если вы не нашли нужный ответ, наша служба поддержки готова помочь.", - "contactSupport": "Связаться с поддержкой", - "categoriesLabel": "Категории", - "helpCenter": "Центр помощи", - "helpCenterDesc": "Просмотрите подробные руководства, инструкции и советы по использованию Smart Rent.", - "visitHelpCenter": "Посетить центр помощи", - "safetyInfo": "Информация о безопасности", - "safetyInfoDesc": "Узнайте о наших протоколах безопасности, рекомендациях для гостей и хозяев, а также о ресурсах для экстренных случаев.", - "viewSafetyGuidelines": "Посмотреть рекомендации по безопасности" - , - "categories": { - "general": "Общие вопросы", - "booking": "Бронирование и проживание", - "payment": "Оплата и возвраты", - "host": "Вопросы для хозяев", - "safety": "Безопасность", - "account": "Управление аккаунтом" + "general": { + "what-is-smart-rent": { + "question": "Что такое Smart Rent System?", + "answer": "Smart Rent System — это платформа, соединяющая путешественников с уникальными вариантами размещения по всему миру. Наша платформа позволяет хозяевам размещать свои объекты, а гостям — бронировать их. Мы обеспечиваем безопасные платежи, проверенные отзывы и поддержку клиентов для комфортного опыта каждого пользователя." + }, + "how-to-start": { + "question": "Как начать пользоваться Smart Rent?", + "answer": "Начать очень просто! Просто создайте аккаунт, заполните профиль и начните искать объекты или размещайте свои. Просматривайте варианты по местоположению, цене, удобствам и другим параметрам, чтобы найти идеальное жилье для вашей следующей поездки." + }, + "contact-support": { + "question": "Как связаться со службой поддержки?", + "answer": "Вы можете связаться с нашей службой поддержки через сайт, по электронной почте support@smartrentsystem.com или по телефону +1 (800) SMART-RENT. Мы работаем круглосуточно и готовы помочь с любыми вопросами." + }, + "app-available": { + "question": "Есть ли мобильное приложение?", + "answer": "Да! Приложение Smart Rent System доступно для iOS и Android. Скачайте его в App Store или Google Play, чтобы управлять бронированиями, общаться с хозяевами и просматривать объекты на ходу." + } }, - "categoriesLabel": "Категории", - "general": [], - "booking": [], - "payment": [], - "host": [], - "safety": [], - "account": [] + "booking": { + "how-to-book": { + "question": "Как забронировать жильё?", + "answer": "Чтобы забронировать жильё, выберите нужное место и даты. Найдите подходящий вариант, нажмите 'Забронировать' и следуйте инструкциям. Некоторые объекты доступны для мгновенного бронирования, другие требуют подтверждения хозяина." + }, + "booking-confirmation": { + "question": "Как узнать, что бронирование подтверждено?", + "answer": "После завершения бронирования вы получите подтверждение на электронную почту. Также статус бронирования можно посмотреть в разделе 'Поездки' вашего аккаунта." + }, + "cancel-booking": { + "question": "Как отменить бронирование?", + "answer": "Чтобы отменить бронирование, перейдите в раздел 'Поездки', найдите нужное бронирование и выберите 'Отменить'. Сумма возврата зависит от политики отмены, указанной в деталях бронирования." + }, + "modify-dates": { + "question": "Можно ли изменить даты бронирования?", + "answer": "Да, вы можете запросить изменение дат. Перейдите в раздел 'Поездки', выберите нужное бронирование и нажмите 'Изменить'. Изменения возможны при наличии свободных дат и с одобрения хозяина." + } + }, + "payment": { + "payment-methods": { + "question": "Какие способы оплаты принимаются?", + "answer": "Мы принимаем основные кредитные и дебетовые карты (Visa, MasterCard, American Express, Discover), PayPal, а также Apple Pay и Google Pay в некоторых регионах. Все платежи обрабатываются безопасно через нашу платформу." + }, + "payment-timing": { + "question": "Когда списываются средства за бронирование?", + "answer": "В большинстве случаев оплата производится при подтверждении бронирования хозяином или сразу при мгновенном бронировании. Для длительных или ранних бронирований возможна оплата в рассрочку." + }, + "security-deposit": { + "question": "Что такое залог и когда он возвращается?", + "answer": "Залог удерживается для покрытия возможного ущерба. Если претензий нет, сумма автоматически возвращается через 14 дней после выезда." + }, + "refund-process": { + "question": "Сколько времени занимает возврат средств?", + "answer": "После оформления возврата средства обычно поступают в течение 5-10 рабочих дней, в зависимости от банка и платёжной системы." + } + } } diff --git a/frontend/src/locales/zh/FAQ.json b/frontend/src/locales/zh/FAQ.json index 0cf3007..785f8d2 100644 --- a/frontend/src/locales/zh/FAQ.json +++ b/frontend/src/locales/zh/FAQ.json @@ -3,12 +3,60 @@ "faqSubtitle": "查找有关使用Smart Rent System的最常见问题的答案。", "categoriesLabel": "类别", "categories": { - "general": "常见问题", - "booking": "预订与预约", - "payment": "支付与退款", - "host": "房东问题", - "safety": "安全与保障", - "account": "账户管理" + "general": { + "what-is-smart-rent": { + "question": "Smart Rent System是什么?", + "answer": "Smart Rent System是一个连接全球旅行者与独特住宿的平台。我们的平台允许房东发布房源,客人预订这些空间。我们提供安全的支付处理、验证的评价和客户支持,确保每个人都能顺利体验。" + }, + "how-to-start": { + "question": "如何开始使用Smart Rent?", + "answer": "开始很简单!只需创建一个账户,填写个人信息,即可开始搜索房源或发布自己的空间。按位置、价格、设施等浏览房源,找到下次旅行的理想住所。" + }, + "contact-support": { + "question": "如何联系客服?", + "answer": "您可以通过多种渠道联系我们的客户支持团队。使用网站上的联系页面,发送邮件至support@smartrentsystem.com,或拨打+1 (800) SMART-RENT。我们的团队全天候为您服务。" + }, + "app-available": { + "question": "有移动应用吗?", + "answer": "有!Smart Rent System应用适用于iOS和Android。可在App Store或Google Play Store下载,随时管理预订、消息和浏览房源。" + } + }, + "booking": { + "how-to-book": { + "question": "如何预订房源?", + "answer": "要预订房源,请按所需位置和日期搜索住宿。找到喜欢的房源后,点击“预订”或“立即预订”,并完成结账流程。有些房源可即时预订,其他则需房东批准。" + }, + "booking-confirmation": { + "question": "如何确认我的预订?", + "answer": "完成预订流程后,您会收到包含所有细节的确认邮件。也可在账户“行程”部分查看预订状态。" + }, + "cancel-booking": { + "question": "如何取消预订?", + "answer": "要取消预订,请进入账户“行程”部分,找到要取消的预订,点击“取消”选项。退款金额取决于房源的取消政策。" + }, + "modify-dates": { + "question": "可以更改预订日期吗?", + "answer": "可以,您可申请更改预订日期。进入“行程”页面,选择要更改的预订,点击“修改预订”。需房东批准和有空房。新日期可能会调整价格。" + } + }, + "payment": { + "payment-methods": { + "question": "接受哪些支付方式?", + "answer": "我们接受主流信用卡和借记卡(Visa、MasterCard、American Express、Discover)、PayPal,以及部分地区的Apple Pay和Google Pay。所有支付均通过平台安全处理。" + }, + "payment-timing": { + "question": "预订时何时扣费?", + "answer": "大多数预订在房东接受预订或使用即时预订时全额扣费。部分长期或提前预订可分期付款。" + }, + "security-deposit": { + "question": "什么是押金,何时退还?", + "answer": "押金用于覆盖住宿期间的潜在损坏。除非房东提出索赔,否则不会扣费。无索赔时,退房后14天自动解除支付方式上的冻结。" + }, + "refund-process": { + "question": "退款处理需要多久?", + "answer": "退款发起后,通常5-10个工作日到账。具体时间取决于支付服务商和金融机构。" + } + } }, "needMoreHelp": "需要更多帮助?", "needMoreHelpDesc": "如果您找不到所需内容,我们的支持团队随时为您服务。", diff --git a/frontend/src/pages/Account.jsx b/frontend/src/pages/Account.jsx index 1ed7656..8993153 100644 --- a/frontend/src/pages/Account.jsx +++ b/frontend/src/pages/Account.jsx @@ -395,9 +395,144 @@ const Account = () => { {activeTab === "profile" && (

- {t("profileInformation")} + {t("profileInformation", "Profile Information")}

- {/* Profile form and content here */} +
+
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + + + + +
+
+
+ +
+
)} diff --git a/frontend/src/pages/Cancellation.jsx b/frontend/src/pages/Cancellation.jsx index 650ecbb..352a49a 100644 --- a/frontend/src/pages/Cancellation.jsx +++ b/frontend/src/pages/Cancellation.jsx @@ -158,7 +158,7 @@ const Cancellation = () => { {activeTab === 'host' && (

- {t('hostTipFlexible', { ns: 'Cancellation' }).split(':')[0]}: {t('hostTipFlexible')} + {t('hostTipFlexibleLabel', { ns: 'Cancellation', defaultValue: 'Tip for hosts' })}: {t('hostTipFlexible')}

)} @@ -189,7 +189,7 @@ const Cancellation = () => { {activeTab === 'host' && (

- {t('hostTipModerate', { ns: 'Cancellation' }).split(':')[0]}: {t('hostTipModerate')} + {t('hostTipModerateLabel', { ns: 'Cancellation', defaultValue: 'Tip for hosts' })}: {t('hostTipModerate')}

)} @@ -220,7 +220,7 @@ const Cancellation = () => { {activeTab === 'host' && (

- {t('hostTipStrict', { ns: 'Cancellation' }).split(':')[0]}: {t('hostTipStrict')} + {t('hostTipStrictLabel', { ns: 'Cancellation', defaultValue: 'Tip for hosts' })}: {t('hostTipStrict')}

)} @@ -251,7 +251,7 @@ const Cancellation = () => { {activeTab === 'host' && (

- {t('hostTipNonrefundable', { ns: 'Cancellation' }).split(':')[0]}: {t('hostTipNonrefundable')} + {t('hostTipNonrefundableLabel', { ns: 'Cancellation', defaultValue: 'Tip for hosts' })}: {t('hostTipNonrefundable')}

)} diff --git a/frontend/src/pages/Register.jsx b/frontend/src/pages/Register.jsx index e47ff97..f4822ca 100644 --- a/frontend/src/pages/Register.jsx +++ b/frontend/src/pages/Register.jsx @@ -1,7 +1,7 @@ import React, { useState, useEffect } from "react"; import { Link, useNavigate, useLocation } from "react-router-dom"; import { useAuth } from "../contexts/AuthContext"; -import { useTranslation } from "react-i18next"; +import { useTranslation, Trans } from "react-i18next"; /** * Register Component @@ -390,7 +390,9 @@ const Register = () => { htmlFor="terms" className="ml-2 block text-sm text-neutral-700" > - {t("agreeTerms", "I agree to the Terms of Service and Privacy Policy")} + + I agree to the Terms of Service and Privacy Policy +
diff --git a/frontend/src/pages/Safety.jsx b/frontend/src/pages/Safety.jsx index 685925c..191ff31 100644 --- a/frontend/src/pages/Safety.jsx +++ b/frontend/src/pages/Safety.jsx @@ -35,35 +35,41 @@ const Safety = () => { {/* Safety Features */}

{t('featuresTitle')}

-
-
-
- {/* ...existing code... */} +
+
+
+ + + +
+

{t('featureVerifiedTitle')}

+

+ {t('featureVerifiedDesc')} +

-

{t('featureVerifiedTitle')}

-

- {t('featureVerifiedDesc')} -

-
-
-
- {/* ...existing code... */} +
+
+ + + +
+

{t('featurePropertyTitle')}

+

+ {t('featurePropertyDesc')} +

-

{t('featurePropertyTitle')}

-

- {t('featurePropertyDesc')} -

-
-
-
- {/* ...existing code... */} +
+
+ + + +
+

{t('featureSupportTitle')}

+

+ {t('featureSupportDesc')} +

-

{t('featureSupportTitle')}

-

- {t('featureSupportDesc')} -

-
{/* Safety Tips */} @@ -72,21 +78,71 @@ const Safety = () => {

{t('tipsGuestsTitle')}

    -
  • {/* ...existing code... */}{t('tipsGuests1')}
  • -
  • {/* ...existing code... */}{t('tipsGuests2')}
  • -
  • {/* ...existing code... */}{t('tipsGuests3')}
  • -
  • {/* ...existing code... */}{t('tipsGuests4')}
  • -
  • {/* ...existing code... */}{t('tipsGuests5')}
  • +
  • + + + + {t('tipsGuests1')} +
  • +
  • + + + + {t('tipsGuests2')} +
  • +
  • + + + + {t('tipsGuests3')} +
  • +
  • + + + + {t('tipsGuests4')} +
  • +
  • + + + + {t('tipsGuests5')} +

{t('tipsHostsTitle')}

    -
  • {/* ...existing code... */}{t('tipsHosts1')}
  • -
  • {/* ...existing code... */}{t('tipsHosts2')}
  • -
  • {/* ...existing code... */}{t('tipsHosts3')}
  • -
  • {/* ...existing code... */}{t('tipsHosts4')}
  • -
  • {/* ...existing code... */}{t('tipsHosts5')}
  • +
  • + + + + {t('tipsHosts1')} +
  • +
  • + + + + {t('tipsHosts2')} +
  • +
  • + + + + {t('tipsHosts3')} +
  • +
  • + + + + {t('tipsHosts4')} +
  • +
  • + + + + {t('tipsHosts5')} +
diff --git a/frontend/src/pages/Terms.jsx b/frontend/src/pages/Terms.jsx index e2a6605..afa0982 100644 --- a/frontend/src/pages/Terms.jsx +++ b/frontend/src/pages/Terms.jsx @@ -88,9 +88,9 @@ const Terms = () => {

{t('contactTitle')}

{t('contact')}

-

{t('email').split(':')[0]}: {t('email').split(':')[1]}

-

{t('address').split(':')[0]}: {t('address').split(':')[1]}

-

{t('phone').split(':')[0]}: {t('phone').split(':')[1]}

+

{t('emailLabel', 'Email')}: {t('emailValue')}

+

{t('addressLabel', 'Address')}: {t('addressValue')}

+

{t('phoneLabel', 'Phone')}: {t('phoneValue')}