Browse Source

feat: add missing Hungarian translations and replace $ with HUF #109

- Add 'Data Access Permissions' translation (Adathozzáférési Engedélyek)
- Update DataAccessSettings.tsx to use i18n for title and description
- Replace all $ currency symbols with HUF throughout the application:
  * LandingPage.tsx: Update testimonial savings and average monthly savings
  * PhoneNumbersContent.tsx: Convert phone number pricing to HUF
- Add missing signup translations (emailAlreadyRegistered, successMessage)
- All prices converted using approximate rate: $1 ≈ 360 HUF

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Claude 4 months ago
parent
commit
1c0d036af7

+ 5 - 2
shopcall.ai-main/src/components/DataAccessSettings.tsx

@@ -9,6 +9,7 @@ import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
 import { Shield, ShieldCheck, ShieldAlert, Info, Loader2, Database, Cloud, Ban } from "lucide-react";
 import { API_URL } from "@/lib/config";
 import { useToast } from "@/hooks/use-toast";
+import { useTranslation } from "react-i18next";
 
 // GDPR Compliance: Check if settings should be hidden
 const HIDE_ORDERS_ACCESS_SETTINGS = import.meta.env.VITE_HIDE_ORDERS_ACCESS_SETTINGS === 'true';
@@ -45,6 +46,8 @@ export function DataAccessSettings({
   onPermissionsUpdated,
   onPoliciesUpdated
 }: DataAccessSettingsProps) {
+  const { t } = useTranslation();
+
   // Initialize with new policy-based system if available, otherwise convert from old permissions
   const [policies, setPolicies] = useState<AccessPolicySettings>(
     currentPolicies || {
@@ -208,10 +211,10 @@ export function DataAccessSettings({
           <div>
             <CardTitle className="text-white flex items-center gap-2">
               <SecurityIcon className={`w-5 h-5 ${security.color}`} />
-              Data Access Permissions
+              {t('integrations.dataAccessSettings.title')}
             </CardTitle>
             <CardDescription className="text-slate-400">
-              Control which data types can be accessed via API for {storeName}
+              {t('integrations.dataAccessSettings.description', { storeName })}
             </CardDescription>
           </div>
           <Badge className={`${security.color.replace('text-', 'bg-')} text-white`}>

+ 4 - 4
shopcall.ai-main/src/components/LandingPage.tsx

@@ -65,7 +65,7 @@ const LandingPage = () => {
       avatar: "SC",
       content: "ShopCall.ai reduced our customer service costs by 78% while improving satisfaction scores. It's like having 100 expert agents available 24/7.",
       rating: 5,
-      savings: "$45,000/month"
+      savings: "16,200,000 HUF/hónap"
     },
     {
       name: "Marcus Rodriguez",
@@ -73,7 +73,7 @@ const LandingPage = () => {
       avatar: "MR",
       content: "The multi-language support helped us expand to 12 new markets seamlessly. Our international customers love the instant, native-language support.",
       rating: 5,
-      savings: "$32,000/month"
+      savings: "11,520,000 HUF/hónap"
     },
     {
       name: "Emily Watson",
@@ -81,7 +81,7 @@ const LandingPage = () => {
       avatar: "EW",
       content: "Implementation took just 2 hours. Now we handle 5x more calls with the same team size. Our customers don't even realize they're talking to AI.",
       rating: 5,
-      savings: "$28,000/month"
+      savings: "10,080,000 HUF/hónap"
     }
   ];
 
@@ -293,7 +293,7 @@ const LandingPage = () => {
           <div className="grid md:grid-cols-3 gap-8 mb-16">
             <Card className="bg-slate-800 border-slate-700 hover:bg-slate-700/80 transition-colors">
               <CardHeader className="text-center">
-                <div className="text-4xl font-bold text-green-400 mb-2">$35,000</div>
+                <div className="text-4xl font-bold text-green-400 mb-2">12,600,000 HUF</div>
                 <CardTitle className="text-white text-xl">{t('landing.savings.average.title')}</CardTitle>
                 <CardDescription className="text-slate-300 text-base">
                   {t('landing.savings.average.description')}

+ 8 - 8
shopcall.ai-main/src/components/PhoneNumbersContent.tsx

@@ -33,8 +33,8 @@ const availableCountries = [
     name: "United States",
     flag: "🇺🇸",
     pricing: {
-      setup: "$0",
-      monthly: "$5/month"
+      setup: "0 HUF",
+      monthly: "1,800 HUF/hónap"
     },
     kycRequired: false,
     availability: "Instant"
@@ -43,8 +43,8 @@ const availableCountries = [
     name: "United Kingdom",
     flag: "🇬🇧",
     pricing: {
-      setup: "$0",
-      monthly: "$8/month"
+      setup: "0 HUF",
+      monthly: "2,880 HUF/hónap"
     },
     kycRequired: true,
     availability: "2-3 business days"
@@ -53,8 +53,8 @@ const availableCountries = [
     name: "Canada",
     flag: "🇨🇦",
     pricing: {
-      setup: "$0",
-      monthly: "$6/month"
+      setup: "0 HUF",
+      monthly: "2,160 HUF/hónap"
     },
     kycRequired: false,
     availability: "Instant"
@@ -63,8 +63,8 @@ const availableCountries = [
     name: "Australia",
     flag: "🇦🇺",
     pricing: {
-      setup: "$0",
-      monthly: "$10/month"
+      setup: "0 HUF",
+      monthly: "3,600 HUF/hónap"
     },
     kycRequired: true,
     availability: "1-2 business days"

+ 8 - 2
shopcall.ai-main/src/i18n/locales/en.json

@@ -248,8 +248,10 @@
       "emailInvalid": "Please enter a valid email address",
       "passwordRequired": "Password is required",
       "passwordMinLength": "Password must be at least 8 characters",
-      "signupFailed": "An error occurred during signup. Please try again."
-    }
+      "signupFailed": "An error occurred during signup. Please try again.",
+      "emailAlreadyRegistered": "This email is already registered. Please login instead."
+    },
+    "successMessage": "Account created successfully! Please check your email to verify your account before logging in."
   },
   "otp": {
     "title": "Verify Your Email",
@@ -700,6 +702,10 @@
       "title": "Data Access Permissions",
       "description": "Configure data access permissions for {{storeName}}"
     },
+    "dataAccessSettings": {
+      "title": "Data Access Permissions",
+      "description": "Control which data types can be accessed via API for {{storeName}}"
+    },
     "oauth": {
       "woocommerceConnected": "WooCommerce Connected!",
       "woocommerceConnectedDescription": "Successfully connected {{storeName}}",

+ 8 - 2
shopcall.ai-main/src/i18n/locales/hu.json

@@ -238,8 +238,10 @@
       "emailInvalid": "Kérjük, adjon meg egy érvényes email címet",
       "passwordRequired": "A jelszó megadása kötelező",
       "passwordMinLength": "A jelszónak legalább 8 karakter hosszúnak kell lennie",
-      "signupFailed": "Hiba történt a regisztráció során. Kérjük, próbálja újra."
-    }
+      "signupFailed": "Hiba történt a regisztráció során. Kérjük, próbálja újra.",
+      "emailAlreadyRegistered": "Ez az email cím már regisztrálva van. Kérjük, jelentkezzen be helyette."
+    },
+    "successMessage": "Fiók sikeresen létrehozva! Kérjük, ellenőrizze email fiókját a bejelentkezés előtti megerősítéshez."
   },
   "otp": {
     "title": "Email Cím Ellenőrzése",
@@ -690,6 +692,10 @@
       "title": "Adathozzáférési Engedélyek",
       "description": "Adathozzáférési engedélyek konfigurálása: {{storeName}}"
     },
+    "dataAccessSettings": {
+      "title": "Adathozzáférési Engedélyek",
+      "description": "API-n keresztül elérhető adattípusok kezelése: {{storeName}}"
+    },
     "oauth": {
       "woocommerceConnected": "WooCommerce Csatlakoztatva!",
       "woocommerceConnectedDescription": "Sikeresen csatlakoztatva: {{storeName}}",