Products ve Services sayfaları translation düzenlemesi
This commit is contained in:
parent
f7d278695b
commit
7cbd593679
11 changed files with 668 additions and 309 deletions
198
My_workflow.json
198
My_workflow.json
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"name": "My workflow",
|
"name": "Kadifeteks Workflow",
|
||||||
"nodes": [
|
"nodes": [
|
||||||
{
|
{
|
||||||
"parameters": {
|
"parameters": {
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"jsCode": "const q = $('Webhook').item.json.body.question.toLowerCase();\n\nif (q.includes(\"tahmin\") || q.includes(\"gelecek\") || q.includes(\"trend\")) {\n return [{ json: { type: \"analyze\", question: q } }];\n}\n\nif (q.includes(\"getir\") || q.includes(\"liste\") || q.includes(\"kaç\")) {\n return [{ json: { type: \"query\", question: q } }];\n}\n\nreturn [{ json: { type: \"chat\", question: q } }];"
|
"jsCode": "const q = $('Webhook').item.json.body.question.toLowerCase();\n\nif (q.includes(\"tahmin\") || q.includes(\"gelecek\") || q.includes(\"trend\")) {\n return [{ json: { type: \"analyze\", question: q } }];\n}\n\nif (q.includes(\"getir\") || q.includes(\"liste\") || q.includes(\"kaç\") || q.includes(\"göster\")) {\n return [{ json: { type: \"query\", question: q } }];\n}\n\nreturn [{ json: { type: \"chat\", question: q } }];"
|
||||||
},
|
},
|
||||||
"type": "n8n-nodes-base.code",
|
"type": "n8n-nodes-base.code",
|
||||||
"typeVersion": 2,
|
"typeVersion": 2,
|
||||||
|
|
@ -211,26 +211,6 @@
|
||||||
"id": "0f14a81e-5f75-4093-ab93-a24a3315ebda",
|
"id": "0f14a81e-5f75-4093-ab93-a24a3315ebda",
|
||||||
"name": "AI Query"
|
"name": "AI Query"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"modelName": "models/gemini-2.0-flash",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
80,
|
|
||||||
40
|
|
||||||
],
|
|
||||||
"id": "3b370555-d453-4eaf-8cf7-c04722350774",
|
|
||||||
"name": "Google Gemini Chat Model2",
|
|
||||||
"credentials": {
|
|
||||||
"googlePalmApi": {
|
|
||||||
"id": "g7Ev8dkuHaLU7JbG",
|
|
||||||
"name": "Google Gemini(PaLM) Api account"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"options": {}
|
"options": {}
|
||||||
|
|
@ -253,32 +233,12 @@
|
||||||
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
|
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
|
||||||
"typeVersion": 1.3,
|
"typeVersion": 1.3,
|
||||||
"position": [
|
"position": [
|
||||||
-700,
|
-660,
|
||||||
340
|
260
|
||||||
],
|
],
|
||||||
"id": "72d1f63a-4385-4892-a37c-396b07a7e40c",
|
"id": "72d1f63a-4385-4892-a37c-396b07a7e40c",
|
||||||
"name": "Simple Memory"
|
"name": "Simple Memory"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"modelName": "models/gemini-2.0-flash",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
100,
|
|
||||||
480
|
|
||||||
],
|
|
||||||
"id": "922eb62e-090d-4bee-80e4-a6c82a155922",
|
|
||||||
"name": "Google Gemini Chat Model4",
|
|
||||||
"credentials": {
|
|
||||||
"googlePalmApi": {
|
|
||||||
"id": "g7Ev8dkuHaLU7JbG",
|
|
||||||
"name": "Google Gemini(PaLM) Api account"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"promptType": "define",
|
"promptType": "define",
|
||||||
|
|
@ -343,26 +303,6 @@
|
||||||
"alwaysOutputData": true,
|
"alwaysOutputData": true,
|
||||||
"onError": "continueRegularOutput"
|
"onError": "continueRegularOutput"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"parameters": {
|
|
||||||
"modelName": "models/gemini-2.0-flash",
|
|
||||||
"options": {}
|
|
||||||
},
|
|
||||||
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
|
|
||||||
"typeVersion": 1,
|
|
||||||
"position": [
|
|
||||||
100,
|
|
||||||
-260
|
|
||||||
],
|
|
||||||
"id": "0cddf53c-45c8-4bbb-89e2-41f08ed25999",
|
|
||||||
"name": "Google Gemini Chat Model1",
|
|
||||||
"credentials": {
|
|
||||||
"googlePalmApi": {
|
|
||||||
"id": "g7Ev8dkuHaLU7JbG",
|
|
||||||
"name": "Google Gemini(PaLM) Api account"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"assignments": {
|
"assignments": {
|
||||||
|
|
@ -410,7 +350,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"functionCode": "import matplotlib.pyplot as plt\nimport io\nimport base64\nimport json\n\n# items listesindeki verilere ulaşırken hata kontrolü ekleyelim\nif len(items) > 0:\n question = items[0].get('question', 'Soru sağlanmadı') # Webhook'tan gelen soru\n sql = items[0].get('sql', 'SQL Sorgusu sağlanmadı') # AI Query'den gelen SQL sorgusu\nelse:\n question = \"Soru sağlanmadı\"\n sql = \"SQL Sorgusu sağlanmadı\"\n\n# SQL Query node'undan alınan sonuçlar\nresultItems = [\n {key: item[key] for key in item if key not in [\"question\", \"sql\"]}\n for item in items\n]\n\n# Dinamik sütun isimlerini almak için ilk öğeyi kullanıyoruz\nif resultItems and isinstance(resultItems[0], dict):\n columns = list(resultItems[0].keys()) # İlk öğedeki tüm sütunları alıyoruz\n\n # Dinamik olarak etiket ve veri sütunlarını belirliyoruz\n labels_column = None\n data_column = None\n\n # Etiket sütunu genellikle metin türünde (string) olacak, veri sütunu ise sayısal türde (int, float) olacak\n for col in columns:\n # Etiket sütunu olarak metin (string) türünde olan sütunu seçiyoruz\n if isinstance(resultItems[0].get(col), str):\n labels_column = col\n\n # Veri sütunu olarak sayısal (int veya float) türünde olan sütunu seçiyoruz\n elif isinstance(resultItems[0].get(col), (int, float)):\n data_column = col\n\n # Etiket ve veri sütunları bulunursa, verileri çekiyoruz\n labels = [item.get(labels_column, \"Bilinmeyen\") for item in resultItems if item.get(labels_column) is not None]\n data = [item.get(data_column, 0) for item in resultItems if item.get(data_column) is not None]\n\nelse:\n labels, data = [], [] # Eğer veri boşsa, etiketsiz ve veri içermeyen bir liste döneriz\n\n# **Önemli**: labels ve data uzunluklarını kontrol etme\nif len(labels) != len(data):\n print(f\"Veri uyumsuzluğu: labels uzunluğu: {len(labels)}, data uzunluğu: {len(data)}\")\n # Aynı uzunluktaki verilere göre filtreleme yapabilirsiniz\n min_length = min(len(labels), len(data))\n labels = labels[:min_length]\n data = data[:min_length]\n\n# Eğer etiketsiz veya veri boşsa, görsel oluşturma\nif not labels or not data:\n print(\"Etiketler veya veri listesi boş. Grafik oluşturulamaz.\")\n base64_image = None\nelse:\n # Grafik oluşturucu fonksiyonu\n def generate_base64_image(labels, data):\n # Grafik boyutunu ve başlıkları ayarlama\n fig, ax = plt.subplots(figsize=(10, 6)) # Grafik boyutunu ayarlama\n bars = ax.bar(labels, data, width=0.6) # Bar grafiği çizme\n\n # Etiketleri döndürme ve sıkışıklığı engelleme\n plt.xticks(rotation=45, ha='right')\n plt.tight_layout()\n\n # Verileri çubukların üstüne yerleştirme (değerlerin büyük olmasını engellemek için formatlama)\n for bar in bars:\n height = bar.get_height() # Her çubuğun yüksekliği\n # Burada sayıları doğru bir formatta gösteriyoruz\n formatted_height = f\"{height:,.0f}\" # Sayıyı binlik ayraçlarla biçimlendiriyoruz\n ax.text(bar.get_x() + bar.get_width() / 2, height, formatted_height, \n ha='center', va='bottom', fontsize=10, color='black')\n\n # Base64 olarak görseli kaydetme\n buf = io.BytesIO()\n plt.savefig(buf, format='png', dpi=72) # Görseli base64'e dönüştürmek için\n buf.seek(0)\n base64_image = base64.b64encode(buf.read()).decode('utf-8')\n buf.close()\n plt.close()\n\n return base64_image\n\n # Grafik görselini base64 formatında almak\n base64_image = generate_base64_image(labels, data)\n\n# Sonuçları döndür\nreturn [{\n \"type\": \"query\",\n \"question\": question,\n \"sql\": sql,\n \"answer\": resultItems,\n \"chart\": base64_image, # Grafik base64 formatında dönüyor\n}]\n"
|
"functionCode": "import matplotlib.pyplot as plt\nimport io\nimport base64\nimport json\n\n# items listesindeki verilere ulaşırken hata kontrolü ekleyelim\nif len(items) > 0:\n question = items[0].get('question', 'Soru sağlanmadı') # Webhook'tan gelen soru\n sql = items[0].get('sql', 'SQL Sorgusu sağlanmadı') # AI Query'den gelen SQL sorgusu\nelse:\n question = \"Soru sağlanmadı\"\n sql = \"SQL Sorgusu sağlanmadı\"\n\n# SQL Query node'undan alınan sonuçlar\nresultItems = [\n {key: item[key] for key in item if key not in [\"question\", \"sql\"]}\n for item in items\n]\n\n# Dinamik sütun isimlerini almak için ilk öğeyi kullanıyoruz\nif resultItems and isinstance(resultItems[0], dict):\n columns = list(resultItems[0].keys()) # İlk öğedeki tüm sütunları alıyoruz\n\n # Dinamik olarak etiket ve veri sütunlarını belirliyoruz\n labels_column = None\n data_column = None\n\n # Etiket sütunu genellikle metin türünde (string) olacak, veri sütunu ise sayısal türde (int, float) olacak\n for col in columns:\n # Etiket sütunu olarak metin (string) türünde olan sütunu seçiyoruz\n if isinstance(resultItems[0].get(col), str):\n labels_column = col\n\n # Veri sütunu olarak sayısal (int veya float) türünde olan sütunu seçiyoruz\n elif isinstance(resultItems[0].get(col), (int, float)):\n data_column = col\n\n # Etiket ve veri sütunları bulunursa, verileri çekiyoruz\n labels = [item.get(labels_column, \"Bilinmeyen\") for item in resultItems if item.get(labels_column) is not None]\n data = [item.get(data_column, 0) for item in resultItems if item.get(data_column) is not None]\n\nelse:\n labels, data = [], [] # Eğer veri boşsa, etiketsiz ve veri içermeyen bir liste döneriz\n\n# **Önemli**: labels ve data uzunluklarını kontrol etme\nif len(labels) != len(data):\n print(f\"Veri uyumsuzluğu: labels uzunluğu: {len(labels)}, data uzunluğu: {len(data)}\")\n # Aynı uzunluktaki verilere göre filtreleme yapabilirsiniz\n min_length = min(len(labels), len(data))\n labels = labels[:min_length]\n data = data[:min_length]\n\nbase64_image = None\n\n# Eğer etiketsiz veya veri boşsa, görsel oluşturma\nif not labels or not data:\n print(\"Etiketler veya veri listesi boş. Grafik oluşturulamaz.\")\nelse:\n # Grafik oluşturucu fonksiyonu\n def generate_base64_image(labels, data):\n # Grafik boyutunu ve başlıkları ayarlama\n fig, ax = plt.subplots(figsize=(10, 6)) # Grafik boyutunu ayarlama\n bars = ax.bar(labels, data, width=0.6) # Bar grafiği çizme\n\n # Etiketleri döndürme ve sıkışıklığı engelleme\n plt.xticks(rotation=45, ha='right')\n plt.tight_layout()\n\n # Verileri çubukların üstüne yerleştirme (değerlerin büyük olmasını engellemek için formatlama)\n for bar in bars:\n height = bar.get_height() # Her çubuğun yüksekliği\n # Burada sayıları doğru bir formatta gösteriyoruz\n formatted_height = f\"{height:,.0f}\" # Sayıyı binlik ayraçlarla biçimlendiriyoruz\n ax.text(bar.get_x() + bar.get_width() / 2, height, formatted_height, \n ha='center', va='bottom', fontsize=10, color='black')\n\n # Base64 olarak görseli kaydetme\n buf = io.BytesIO()\n plt.savefig(buf, format='png', dpi=72) # Görseli base64'e dönüştürmek için\n buf.seek(0)\n base64_image = base64.b64encode(buf.read()).decode('utf-8')\n buf.close()\n plt.close()\n\n return base64_image\n\n # Grafik görselini base64 formatında almak\n if len(resultItems[0].keys()) <= 3:\n base64_image = generate_base64_image(labels, data)\n\n# Sonuçları döndür\nreturn [{\n \"type\": \"query\",\n \"question\": question,\n \"sql\": sql,\n \"answer\": resultItems,\n \"chart\": base64_image, # Grafik base64 formatında dönüyor\n}]\n"
|
||||||
},
|
},
|
||||||
"type": "n8n-nodes-python.pythonFunction",
|
"type": "n8n-nodes-python.pythonFunction",
|
||||||
"typeVersion": 1,
|
"typeVersion": 1,
|
||||||
|
|
@ -433,6 +373,66 @@
|
||||||
],
|
],
|
||||||
"id": "b9c551d0-5011-492a-9ae1-9a585b059073",
|
"id": "b9c551d0-5011-492a-9ae1-9a585b059073",
|
||||||
"name": "Analyze Python"
|
"name": "Analyze Python"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"modelName": "models/gemini-2.0-flash",
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [
|
||||||
|
60,
|
||||||
|
-320
|
||||||
|
],
|
||||||
|
"id": "5ca631b2-0132-4cd3-b8c2-40408600f798",
|
||||||
|
"name": "Google Gemini Chat Model",
|
||||||
|
"credentials": {
|
||||||
|
"googlePalmApi": {
|
||||||
|
"id": "g7Ev8dkuHaLU7JbG",
|
||||||
|
"name": "Google Gemini(PaLM) Api account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"modelName": "models/gemini-2.0-flash",
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [
|
||||||
|
100,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"id": "61fa96f5-e48c-41ea-ad41-a721810f9512",
|
||||||
|
"name": "Google Gemini Chat Model1",
|
||||||
|
"credentials": {
|
||||||
|
"googlePalmApi": {
|
||||||
|
"id": "g7Ev8dkuHaLU7JbG",
|
||||||
|
"name": "Google Gemini(PaLM) Api account"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"modelName": "models/gemini-2.0-flash",
|
||||||
|
"options": {}
|
||||||
|
},
|
||||||
|
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [
|
||||||
|
40,
|
||||||
|
480
|
||||||
|
],
|
||||||
|
"id": "479edfdb-252e-42a4-8292-7b35119a492d",
|
||||||
|
"name": "Google Gemini Chat Model2",
|
||||||
|
"credentials": {
|
||||||
|
"googlePalmApi": {
|
||||||
|
"id": "g7Ev8dkuHaLU7JbG",
|
||||||
|
"name": "Google Gemini(PaLM) Api account"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"pinData": {},
|
"pinData": {},
|
||||||
|
|
@ -538,17 +538,6 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Google Gemini Chat Model2": {
|
|
||||||
"ai_languageModel": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "AI Query",
|
|
||||||
"type": "ai_languageModel",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"AI Query": {
|
"AI Query": {
|
||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
|
|
@ -602,17 +591,6 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Google Gemini Chat Model4": {
|
|
||||||
"ai_languageModel": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "AI Analyze",
|
|
||||||
"type": "ai_languageModel",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"AI Analyze": {
|
"AI Analyze": {
|
||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
|
|
@ -651,17 +629,6 @@
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"Google Gemini Chat Model1": {
|
|
||||||
"ai_languageModel": [
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"node": "AI Chat",
|
|
||||||
"type": "ai_languageModel",
|
|
||||||
"index": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Edit Fields1": {
|
"Edit Fields1": {
|
||||||
"main": [
|
"main": [
|
||||||
[
|
[
|
||||||
|
|
@ -684,13 +651,46 @@
|
||||||
],
|
],
|
||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"Google Gemini Chat Model": {
|
||||||
|
"ai_languageModel": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "AI Chat",
|
||||||
|
"type": "ai_languageModel",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Google Gemini Chat Model1": {
|
||||||
|
"ai_languageModel": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "AI Query",
|
||||||
|
"type": "ai_languageModel",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Google Gemini Chat Model2": {
|
||||||
|
"ai_languageModel": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"node": "AI Analyze",
|
||||||
|
"type": "ai_languageModel",
|
||||||
|
"index": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": true,
|
"active": true,
|
||||||
"settings": {
|
"settings": {
|
||||||
"executionOrder": "v1"
|
"executionOrder": "v1"
|
||||||
},
|
},
|
||||||
"versionId": "8231e31d-59e4-488a-b55f-b7b23209223d",
|
"versionId": "3ad2edbb-1c87-4819-a5ed-6cf4c542b4aa",
|
||||||
"meta": {
|
"meta": {
|
||||||
"templateCredsSetupCompleted": true,
|
"templateCredsSetupCompleted": true,
|
||||||
"instanceId": "98a3b71e44c71f7839b97fa3055c6c36b0c5f88cbb523bd18d164bd856e39632"
|
"instanceId": "98a3b71e44c71f7839b97fa3055c6c36b0c5f88cbb523bd18d164bd856e39632"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
|
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Sözsoft Bilişim Hizmetleri</title>
|
<title>Sözsoft</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ const Hero: React.FC = () => {
|
||||||
|
|
||||||
<div className="relative container mx-auto px-4 pt-32 pb-16">
|
<div className="relative container mx-auto px-4 pt-32 pb-16">
|
||||||
<div className="max-w-4xl mx-auto text-center text-white">
|
<div className="max-w-4xl mx-auto text-center text-white">
|
||||||
<h1 className="text-5xl md:text-6xl font-bold mb-6 leading-tight">
|
<h1 className="text-3xl md:text-6xl font-bold mb-6 leading-tight">
|
||||||
{t('hero.title')}
|
{t('hero.title')}
|
||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ const Header: React.FC = () => {
|
||||||
key={link.path}
|
key={link.path}
|
||||||
to={link.path}
|
to={link.path}
|
||||||
className={`font-medium text-sm text-white hover:text-blue-400 transition-colors ${
|
className={`font-medium text-sm text-white hover:text-blue-400 transition-colors ${
|
||||||
link.name === "Demo" ? "bg-blue-600 rounded px-2 py-1" : ""
|
link.name === "Giriş" || link.name === "Login" ? "bg-blue-600 rounded px-2 py-1" : ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{link.name}
|
{link.name}
|
||||||
|
|
@ -90,7 +90,7 @@ const Header: React.FC = () => {
|
||||||
key={link.path}
|
key={link.path}
|
||||||
to={link.path}
|
to={link.path}
|
||||||
className={`font-medium text-white hover:text-blue-400 transition-colors ${
|
className={`font-medium text-white hover:text-blue-400 transition-colors ${
|
||||||
link.name === "Demo" ? "bg-blue-600 rounded px-2 py-1" : ""
|
link.name === "Giriş" || link.name === "Login" ? "bg-blue-600 rounded px-2 py-1" : ""
|
||||||
}`}
|
}`}
|
||||||
onClick={toggleMenu}
|
onClick={toggleMenu}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -15,12 +15,12 @@ const translations = {
|
||||||
"nav.about": "Hakkımızda",
|
"nav.about": "Hakkımızda",
|
||||||
"nav.products": "Ürünler",
|
"nav.products": "Ürünler",
|
||||||
"nav.services": "Hizmetler",
|
"nav.services": "Hizmetler",
|
||||||
"nav.demo": "Demo",
|
"nav.demo": "Giriş",
|
||||||
"nav.blog": "Blog",
|
"nav.blog": "Blog",
|
||||||
"nav.contact": "İletişim",
|
"nav.contact": "İletişim",
|
||||||
|
|
||||||
// Hero Section
|
// Hero Section
|
||||||
"hero.title": "Dünyanın Lider Dil Kursu Yazılımı",
|
"hero.title": "Türkiye'nin Lider Dil Kursu Yazılımı",
|
||||||
"hero.subtitle":
|
"hero.subtitle":
|
||||||
"20 yılı aşkın tecrübemizle, yabancı dil okulları ve kurslar için özel olarak geliştirdiğimiz yazılım çözümlerimizle işletmenizi dijital dünyada bir adım öne taşıyoruz.",
|
"20 yılı aşkın tecrübemizle, yabancı dil okulları ve kurslar için özel olarak geliştirdiğimiz yazılım çözümlerimizle işletmenizi dijital dünyada bir adım öne taşıyoruz.",
|
||||||
"hero.cta.consultation": "Ücretsiz Demo İsteyin",
|
"hero.cta.consultation": "Ücretsiz Demo İsteyin",
|
||||||
|
|
@ -130,57 +130,51 @@ const translations = {
|
||||||
"services.title": "Hizmetlerimiz",
|
"services.title": "Hizmetlerimiz",
|
||||||
"services.subtitle":
|
"services.subtitle":
|
||||||
"İşletmenizin dijital dönüşüm yolculuğunda ihtiyaç duyduğu tüm teknoloji çözümleri",
|
"İşletmenizin dijital dönüşüm yolculuğunda ihtiyaç duyduğu tüm teknoloji çözümleri",
|
||||||
"services.software.title": "Özel Yazılım Geliştirme",
|
"services.software.title": "Yazılım Kurulum ve Entegrasyon",
|
||||||
"services.software.desc":
|
"services.software.desc":
|
||||||
"İşletmenizin ihtiyaçlarına özel yazılım çözümleri",
|
"Kurumunuza özel kurulum ve entegrasyon hizmetleri",
|
||||||
"services.web.title": "Web Uygulamaları",
|
"services.web.title": "Kullanıcı Eğitimi",
|
||||||
"services.web.desc": "Modern ve kullanıcı dostu web uygulamaları",
|
"services.web.desc": "Kapsamlı eğitim ve destek hizmetleri",
|
||||||
"services.mobile.title": "Mobil Uygulamalar",
|
"services.mobile.title": "Güvenlik Hizmetleri",
|
||||||
"services.mobile.desc": "iOS ve Android için native uygulamalar",
|
"services.mobile.desc": "Verilerinizin güvenliği için kapsamlı çözümler",
|
||||||
"services.database.title": "Veritabanı Çözümleri",
|
"services.database.title": "Hosting ve Barındırma",
|
||||||
"services.database.desc": "Güvenli ve ölçeklenebilir veritabanı sistemleri",
|
"services.database.desc": "Güvenilir hosting ve barındırma hizmetleri",
|
||||||
"services.software.features.analysis": "Analiz ve Planlama",
|
"services.software.features.analysis": "Sistem kurulumu ve yapılandırma",
|
||||||
"services.software.features.design": "Tasarım ve Mimari",
|
"services.software.features.design": "Mevcut verilerinizin aktarımı",
|
||||||
"services.software.features.development": "Yazılım Geliştirme",
|
"services.software.features.development": "Özel raporlama ayarları",
|
||||||
"services.software.features.testing": "Test ve Kalite Güvencesi",
|
"services.software.features.testing": "Kullanıcı yetkilendirme",
|
||||||
"services.software.features.maintenance": "Bakım ve Destek",
|
"services.software.features.maintenance": "Şube entegrasyonları",
|
||||||
"services.web.features.frontend": "Frontend Geliştirme",
|
"services.web.features.frontend": "Uzaktan eğitim (5 saat)",
|
||||||
"services.web.features.backend": "Backend Geliştirme",
|
"services.web.features.backend": "Yerinde eğitim seçeneği",
|
||||||
"services.web.features.api": "API Geliştirme",
|
"services.web.features.api": "Kullanım kılavuzları",
|
||||||
"services.web.features.seo": "SEO Optimizasyonu",
|
"services.web.features.seo": "Sürekli teknik destek",
|
||||||
"services.web.features.performance": "Performans Optimizasyonu",
|
"services.web.features.performance": "Performans Optimizasyonu",
|
||||||
"services.mobile.features.design": "Mobil Uygulama Tasarımı",
|
"services.mobile.features.design": "Veri yedekleme hizmeti",
|
||||||
"services.mobile.features.native": "Native Mobil Uygulama Geliştirme",
|
"services.mobile.features.native": "IP kısıtlama ayarları",
|
||||||
"services.mobile.features.cross":
|
"services.mobile.features.cross": "Kullanıcı erişim kontrolü",
|
||||||
"Cross-Platform Mobil Uygulama Geliştirme",
|
"services.mobile.features.push": "SSL sertifika yönetimi",
|
||||||
"services.mobile.features.push": "Push Bildirim Entegrasyonu",
|
"services.mobile.features.store": "Güvenlik duvarı yapılandırması",
|
||||||
"services.mobile.features.store": "App Store ve Google Play Yayınlama",
|
"services.database.features.design": "Yüksek performanslı sunucular",
|
||||||
"services.database.features.design": "Veritabanı Tasarımı",
|
"services.database.features.optimization": "7/24 sunucu izleme",
|
||||||
"services.database.features.optimization": "Veritabanı Optimizasyonu",
|
"services.database.features.migration": "Otomatik yedekleme",
|
||||||
"services.database.features.migration": "Veritabanı Taşıma",
|
"services.database.features.backup": "DDoS koruması",
|
||||||
"services.database.features.backup": "Veritabanı Yedekleme",
|
"services.database.features.recovery": "Teknik destek",
|
||||||
"services.database.features.recovery": "Veritabanı Kurtarma",
|
"services.integration.title": "SMS ve İletişim Hizmetleri",
|
||||||
"services.integration.title": "Sistem Entegrasyonu",
|
"services.integration.desc": "Toplu iletişim çözümleri",
|
||||||
"services.integration.desc":
|
"services.integration.features.api": "Toplu SMS paketleri",
|
||||||
"Farklı sistemler arasında veri akışı ve entegrasyon çözümleri",
|
"services.integration.features.middleware": "E-posta entegrasyonu",
|
||||||
"services.integration.features.api": "API Entegrasyonu",
|
"services.integration.features.legacy": "Otomatik bildirimler",
|
||||||
"services.integration.features.middleware": "Middleware Geliştirme",
|
"services.integration.features.realtime": "Veli bilgilendirme sistemi",
|
||||||
"services.integration.features.legacy": "Legacy Sistem Entegrasyonu",
|
"services.integration.features.monitoring": "SMS şablonları",
|
||||||
"services.integration.features.realtime":
|
"services.consulting.title": "Bakım ve Destek",
|
||||||
"Gerçek Zamanlı Veri Entegrasyonu",
|
"services.consulting.desc": "Sürekli teknik destek ve bakım hizmetleri",
|
||||||
"services.integration.features.monitoring":
|
"services.consulting.features.tech": "7/24 teknik destek",
|
||||||
"Entegrasyon İzleme ve Yönetimi",
|
"services.consulting.features.project": "Periyodik bakım",
|
||||||
"services.consulting.title": "Teknoloji Danışmanlığı",
|
"services.consulting.features.digital": "Sistem güncellemeleri",
|
||||||
"services.consulting.desc":
|
"services.consulting.features.risk": "Sorun giderme",
|
||||||
"İşletmenizin teknoloji stratejisi ve yol haritası için uzman danışmanlık",
|
"services.consulting.features.training": "Performans optimizasyonu",
|
||||||
"services.consulting.features.tech": "Teknoloji Stratejisi",
|
|
||||||
"services.consulting.features.project": "Proje Yönetimi Danışmanlığı",
|
|
||||||
"services.consulting.features.digital": "Dijital Dönüşüm Danışmanlığı",
|
|
||||||
"services.consulting.features.risk": "Risk Yönetimi Danışmanlığı",
|
|
||||||
"services.consulting.features.training": "Teknoloji Eğitimleri",
|
|
||||||
"services.security.title": "Siber Güvenlik",
|
"services.security.title": "Siber Güvenlik",
|
||||||
"services.security.desc":
|
"services.security.desc": "İşletmenizin dijital varlıklarını siber tehditlere karşı koruma",
|
||||||
"İşletmenizin dijital varlıklarını siber tehditlere karşı koruma",
|
|
||||||
"services.security.features.analysis": "Güvenlik Açığı Analizi",
|
"services.security.features.analysis": "Güvenlik Açığı Analizi",
|
||||||
"services.security.features.penetration": "Sızma Testleri",
|
"services.security.features.penetration": "Sızma Testleri",
|
||||||
"services.security.features.firewall": "Güvenlik Duvarı Yönetimi",
|
"services.security.features.firewall": "Güvenlik Duvarı Yönetimi",
|
||||||
|
|
@ -195,6 +189,88 @@ const translations = {
|
||||||
"services.maintenance.features.updates": "Güncelleme Yönetimi",
|
"services.maintenance.features.updates": "Güncelleme Yönetimi",
|
||||||
"services.maintenance.features.support": "Teknik Destek",
|
"services.maintenance.features.support": "Teknik Destek",
|
||||||
|
|
||||||
|
// Services Page - Support Plans
|
||||||
|
"services.support.title": "Destek Paketleri",
|
||||||
|
"services.support.branchRemote.title": "Şube Uzaktan Destek",
|
||||||
|
"services.support.branchRemote.price": "4,200 ₺",
|
||||||
|
"services.support.branchRemote.period": "/ Ay",
|
||||||
|
"services.support.branchRemote.features.priority": "7/24 öncelikli destek",
|
||||||
|
"services.support.branchRemote.features.remote": "Uzaktan sorun çözümü",
|
||||||
|
"services.support.branchRemote.features.optimization": "Sistem optimizasyonu",
|
||||||
|
"services.support.branchRemote.features.maintenance": "Düzenli bakım",
|
||||||
|
"services.support.branchRemote.features.consulting": "Özel danışmanlık",
|
||||||
|
"services.support.backup.title": "Veri Yedekleme",
|
||||||
|
"services.support.backup.price": "1,700 ₺",
|
||||||
|
"services.support.backup.period": "/ Yıl",
|
||||||
|
"services.support.backup.features.daily": "Günlük yedekleme",
|
||||||
|
"services.support.backup.features.encrypted": "Şifreli depolama",
|
||||||
|
"services.support.backup.features.recovery": "Hızlı veri kurtarma",
|
||||||
|
"services.support.backup.features.verification": "Yedek doğrulama",
|
||||||
|
"services.support.backup.features.access": "7/24 erişim",
|
||||||
|
"services.support.sms.title": "SMS Paketleri",
|
||||||
|
"services.support.sms.price": "750 ₺",
|
||||||
|
"services.support.sms.period": "'den başlayan",
|
||||||
|
"services.support.sms.features.packages": "5.000 SMS'den başlayan paketler",
|
||||||
|
"services.support.sms.features.bulk": "Toplu gönderim",
|
||||||
|
"services.support.sms.features.template": "Şablon yönetimi",
|
||||||
|
"services.support.sms.features.reporting": "Raporlama",
|
||||||
|
"services.support.sms.features.api": "API desteği",
|
||||||
|
"services.support.contactButton": "İletişime Geçin",
|
||||||
|
|
||||||
|
|
||||||
|
// Products Page - Modules
|
||||||
|
"products.modules.sales.title": "Satış ve Reklam Yönetimi",
|
||||||
|
"products.modules.sales.features.appointment": "Randevu takibi",
|
||||||
|
"products.modules.sales.features.meeting": "Görüşme takibi",
|
||||||
|
"products.modules.sales.features.campaign": "Kampanya yönetimi",
|
||||||
|
"products.modules.sales.features.adStats": "Reklam geri dönüş istatistikleri",
|
||||||
|
"products.modules.sales.features.applicant": "Aday başvuru takibi",
|
||||||
|
"products.modules.sales.features.corporate": "Kurumsal satış yönetimi",
|
||||||
|
"products.modules.sales.features.consultant": "Danışman performans takibi",
|
||||||
|
"products.modules.student.title": "Öğrenci Yönetimi",
|
||||||
|
"products.modules.student.features.sales": "Program satışları ve takibi",
|
||||||
|
"products.modules.student.features.contract": "Kayıt sözleşmesi ve evrak yönetimi",
|
||||||
|
"products.modules.student.features.installment": "Taksit ve ödeme planı",
|
||||||
|
"products.modules.student.features.level": "Seviye takibi",
|
||||||
|
"products.modules.student.features.attendance": "Yoklama takibi",
|
||||||
|
"products.modules.student.features.exam": "Sınav sonuçları",
|
||||||
|
"products.modules.student.features.homework": "Ödev takibi",
|
||||||
|
"products.modules.accounting.title": "Muhasebe Yönetimi",
|
||||||
|
"products.modules.accounting.features.cash": "Anlık kasa takibi",
|
||||||
|
"products.modules.accounting.features.bank": "Banka hesap takibi",
|
||||||
|
"products.modules.accounting.features.current": "Cari hesap yönetimi",
|
||||||
|
"products.modules.accounting.features.teacherFee": "Öğretmen ücretleri hesaplama",
|
||||||
|
"products.modules.accounting.features.consultantCommission": "Danışman prim hesaplama",
|
||||||
|
"products.modules.accounting.features.personnelSalary": "Personel maaş yönetimi",
|
||||||
|
"products.modules.accounting.features.incomeExpense": "Gelir/gider tablosu",
|
||||||
|
"products.modules.reporting.title": "Raporlama ve Analiz",
|
||||||
|
"products.modules.reporting.features.dynamic": "Dinamik raporlama",
|
||||||
|
"products.modules.reporting.features.ready": "İstatistiki hazır raporlar",
|
||||||
|
"products.modules.reporting.features.periodic": "Periyodik mail bildirimleri",
|
||||||
|
"products.modules.reporting.features.performance": "Performans analizleri",
|
||||||
|
"products.modules.reporting.features.branch": "Şube bazlı raporlar",
|
||||||
|
"products.modules.reporting.features.financial": "Finansal analizler",
|
||||||
|
"products.modules.reporting.features.studentSuccess": "Öğrenci başarı takibi",
|
||||||
|
|
||||||
|
// Products Page - Pricing
|
||||||
|
"products.pricing.title": "Lisans Seçenekleri",
|
||||||
|
"products.pricing.user.title": "Kullanıcı Lisansı",
|
||||||
|
"products.pricing.user.price": "750 ₺",
|
||||||
|
"products.pricing.user.period": "/ Ay",
|
||||||
|
"products.pricing.user.yearlyPrice": "2,900 ₺ / Yıl",
|
||||||
|
"products.pricing.user.description": "Şube personelleri için temel kullanıcı lisansı",
|
||||||
|
"products.pricing.teacher.title": "Öğretmen Lisansı",
|
||||||
|
"products.pricing.teacher.price": "350 ₺",
|
||||||
|
"products.pricing.teacher.period": "/ Ay",
|
||||||
|
"products.pricing.teacher.yearlyPrice": "1,400 ₺ / Yıl",
|
||||||
|
"products.pricing.teacher.description": "Öğretmenler için özel yetkilendirilmiş lisans",
|
||||||
|
"products.pricing.founder.title": "Kurucu Lisansı",
|
||||||
|
"products.pricing.founder.price": "300 ₺",
|
||||||
|
"products.pricing.founder.period": "/ Ay",
|
||||||
|
"products.pricing.founder.yearlyPrice": "1,100 ₺ / Yıl",
|
||||||
|
"products.pricing.founder.description": "iOS ve Android üzerinden yönetim imkanı",
|
||||||
|
|
||||||
|
|
||||||
// Contact Page
|
// Contact Page
|
||||||
"contact.title": "İletişim",
|
"contact.title": "İletişim",
|
||||||
"contact.subtitle": "Sorularınız için bizimle iletişime geçin",
|
"contact.subtitle": "Sorularınız için bizimle iletişime geçin",
|
||||||
|
|
@ -223,7 +299,7 @@ const translations = {
|
||||||
"about.stats.support": "7/24 Destek",
|
"about.stats.support": "7/24 Destek",
|
||||||
"about.stats.countries": "Ülke",
|
"about.stats.countries": "Ülke",
|
||||||
"about.description.part1":
|
"about.description.part1":
|
||||||
"Sözsoft Bilişim Hizmetleri, eğitim sektörünün dijital dönüşümüne katkı sağlamak amacıyla 2012 yılında kursyazilimi.com markasıyla kurulmuştur. Kuruluşumuzun temelinde, 15 yılı aşkın yazılım tecrübesi ve farklı sektörlerde edinilen güçlü bir birikim yatmaktadır. Uzun yıllar boyunca tekstil sektörünün önde gelen markalarına büyük ölçekli yazılım çözümleri sunan uzman kadromuz, bu tecrübesini eğitim sektörünün dinamik ihtiyaçlarıyla harmanlayarak yenilikçi projelere imza atmaktadır. Sözsoft, sadece yazılım geliştirmekle kalmaz; kurumlara özel, sürdürülebilir ve kullanıcı dostu sistemler geliştirerek gerçek iş değeri yaratmayı hedefler. “Alışılagelmişin dışında ayrıcalıklı hizmet ve her an ulaşılabilirlik” ilkesiyle hareket eden ekibimiz, eğitim kurumlarının operasyonel süreçlerini dijitalleştirerek, verimliliklerini artırmalarına ve çağın gerekliliklerine uyum sağlamalarına destek olmaktadır. Bugün Sözsoft, Türkiye’nin dört bir yanındaki eğitim kurumlarının güvenilir teknoloji çözüm ortağı olmanın gururunu taşımaktadır.",
|
"Sözsoft Bilişim Hizmetleri, eğitim sektörünün dijital dönüşümüne katkı sağlamak amacıyla 2012 yılında sozsoft.com markasıyla kurulmuştur. Kuruluşumuzun temelinde, 15 yılı aşkın yazılım tecrübesi ve farklı sektörlerde edinilen güçlü bir birikim yatmaktadır. Uzun yıllar boyunca tekstil sektörünün önde gelen markalarına büyük ölçekli yazılım çözümleri sunan uzman kadromuz, bu tecrübesini eğitim sektörünün dinamik ihtiyaçlarıyla harmanlayarak yenilikçi projelere imza atmaktadır. Sözsoft, sadece yazılım geliştirmekle kalmaz; kurumlara özel, sürdürülebilir ve kullanıcı dostu sistemler geliştirerek gerçek iş değeri yaratmayı hedefler. “Alışılagelmişin dışında ayrıcalıklı hizmet ve her an ulaşılabilirlik” ilkesiyle hareket eden ekibimiz, eğitim kurumlarının operasyonel süreçlerini dijitalleştirerek, verimliliklerini artırmalarına ve çağın gerekliliklerine uyum sağlamalarına destek olmaktadır. Bugün Sözsoft, Türkiye’nin dört bir yanındaki eğitim kurumlarının güvenilir teknoloji çözüm ortağı olmanın gururunu taşımaktadır.",
|
||||||
"about.description.motto":
|
"about.description.motto":
|
||||||
'"Tutkumuz teknoloji, hedefimiz sürdürülebilir verimliliktir."',
|
'"Tutkumuz teknoloji, hedefimiz sürdürülebilir verimliliktir."',
|
||||||
"about.description.part2":
|
"about.description.part2":
|
||||||
|
|
@ -318,7 +394,7 @@ const translations = {
|
||||||
"nav.about": "About Us",
|
"nav.about": "About Us",
|
||||||
"nav.products": "Products",
|
"nav.products": "Products",
|
||||||
"nav.services": "Services",
|
"nav.services": "Services",
|
||||||
"nav.demo": "Demo",
|
"nav.demo": "Login",
|
||||||
"nav.blog": "Blog",
|
"nav.blog": "Blog",
|
||||||
"nav.contact": "Contact",
|
"nav.contact": "Contact",
|
||||||
|
|
||||||
|
|
@ -388,7 +464,7 @@ const translations = {
|
||||||
"products.title": "Our Products",
|
"products.title": "Our Products",
|
||||||
"products.subtitle":
|
"products.subtitle":
|
||||||
"Software solutions developed specifically for your business needs",
|
"Software solutions developed specifically for your business needs",
|
||||||
"products.kurs.title": "ERP Solution",
|
"products.kurs.title": "Course Management Automation",
|
||||||
"products.kurs.desc":
|
"products.kurs.desc":
|
||||||
"Manage all your business processes from a single platform.",
|
"Manage all your business processes from a single platform.",
|
||||||
"products.crm.title": "CRM System",
|
"products.crm.title": "CRM System",
|
||||||
|
|
@ -500,6 +576,88 @@ const translations = {
|
||||||
"services.maintenance.features.updates": "Update Management",
|
"services.maintenance.features.updates": "Update Management",
|
||||||
"services.maintenance.features.support": "Technical Support",
|
"services.maintenance.features.support": "Technical Support",
|
||||||
|
|
||||||
|
// Services Page - Support Plans
|
||||||
|
"services.support.title": "Support Packages",
|
||||||
|
"services.support.branchRemote.title": "Branch Remote Support",
|
||||||
|
"services.support.branchRemote.price": "₺4,200",
|
||||||
|
"services.support.branchRemote.period": "/ Month",
|
||||||
|
"services.support.branchRemote.features.priority": "24/7 priority support",
|
||||||
|
"services.support.branchRemote.features.remote": "Remote troubleshooting",
|
||||||
|
"services.support.branchRemote.features.optimization": "System optimization",
|
||||||
|
"services.support.branchRemote.features.maintenance": "Regular maintenance",
|
||||||
|
"services.support.branchRemote.features.consulting": "Specialized consulting",
|
||||||
|
"services.support.backup.title": "Data Backup",
|
||||||
|
"services.support.backup.price": "₺1,700",
|
||||||
|
"services.support.backup.period": "/ Year",
|
||||||
|
"services.support.backup.features.daily": "Daily backup",
|
||||||
|
"services.support.backup.features.encrypted": "Encrypted storage",
|
||||||
|
"services.support.backup.features.recovery": "Fast data recovery",
|
||||||
|
"services.support.backup.features.verification": "Backup verification",
|
||||||
|
"services.support.backup.features.access": "24/7 access",
|
||||||
|
"services.support.sms.title": "SMS Packages",
|
||||||
|
"services.support.sms.price": "₺750",
|
||||||
|
"services.support.sms.period": "starting from",
|
||||||
|
"services.support.sms.features.packages": "Packages starting from 5,000 SMS",
|
||||||
|
"services.support.sms.features.bulk": "Bulk sending",
|
||||||
|
"services.support.sms.features.template": "Template management",
|
||||||
|
"services.support.sms.features.reporting": "Reporting",
|
||||||
|
"services.support.sms.features.api": "API support",
|
||||||
|
"services.support.contactButton": "Get in Touch",
|
||||||
|
|
||||||
|
|
||||||
|
// Products Page - Modules
|
||||||
|
"products.modules.sales.title": "Sales and Advertising Management",
|
||||||
|
"products.modules.sales.features.appointment": "Appointment tracking",
|
||||||
|
"products.modules.sales.features.meeting": "Meeting tracking",
|
||||||
|
"products.modules.sales.features.campaign": "Campaign management",
|
||||||
|
"products.modules.sales.features.adStats": "Advertising return statistics",
|
||||||
|
"products.modules.sales.features.applicant": "Applicant tracking",
|
||||||
|
"products.modules.sales.features.corporate": "Corporate sales management",
|
||||||
|
"products.modules.sales.features.consultant": "Consultant performance tracking",
|
||||||
|
"products.modules.student.title": "Student Management",
|
||||||
|
"products.modules.student.features.sales": "Program sales and tracking",
|
||||||
|
"products.modules.student.features.contract": "Registration contract and document management",
|
||||||
|
"products.modules.student.features.installment": "Installment and payment plan",
|
||||||
|
"products.modules.student.features.level": "Level tracking",
|
||||||
|
"products.modules.student.features.attendance": "Attendance tracking",
|
||||||
|
"products.modules.student.features.exam": "Exam results",
|
||||||
|
"products.modules.student.features.homework": "Homework tracking",
|
||||||
|
"products.modules.accounting.title": "Accounting Management",
|
||||||
|
"products.modules.accounting.features.cash": "Instant cash tracking",
|
||||||
|
"products.modules.accounting.features.bank": "Bank account tracking",
|
||||||
|
"products.modules.accounting.features.current": "Current account management",
|
||||||
|
"products.modules.accounting.features.teacherFee": "Teacher fee calculation",
|
||||||
|
"products.modules.accounting.features.consultantCommission": "Consultant commission calculation",
|
||||||
|
"products.modules.accounting.features.personnelSalary": "Personnel salary management",
|
||||||
|
"products.modules.accounting.features.incomeExpense": "Income/expense statement",
|
||||||
|
"products.modules.reporting.title": "Reporting and Analysis",
|
||||||
|
"products.modules.reporting.features.dynamic": "Dynamic reporting",
|
||||||
|
"products.modules.reporting.features.ready": "Ready statistical reports",
|
||||||
|
"products.modules.reporting.features.periodic": "Periodic email notifications",
|
||||||
|
"products.modules.reporting.features.performance": "Performance analysis",
|
||||||
|
"products.modules.reporting.features.branch": "Branch-based reports",
|
||||||
|
"products.modules.reporting.features.financial": "Financial analysis",
|
||||||
|
"products.modules.reporting.features.studentSuccess": "Student success tracking",
|
||||||
|
|
||||||
|
// Products Page - Pricing
|
||||||
|
"products.pricing.title": "License Options",
|
||||||
|
"products.pricing.user.title": "User License",
|
||||||
|
"products.pricing.user.price": "₺750",
|
||||||
|
"products.pricing.user.period": "/ Month",
|
||||||
|
"products.pricing.user.yearlyPrice": "₺2,900 / Year",
|
||||||
|
"products.pricing.user.description": "Basic user license for branch personnel",
|
||||||
|
"products.pricing.teacher.title": "Teacher License",
|
||||||
|
"products.pricing.teacher.price": "₺350",
|
||||||
|
"products.pricing.teacher.period": "/ Month",
|
||||||
|
"products.pricing.teacher.yearlyPrice": "₺1,400 / Year",
|
||||||
|
"products.pricing.teacher.description": "Special authorized license for teachers",
|
||||||
|
"products.pricing.founder.title": "Founder License",
|
||||||
|
"products.pricing.founder.price": "₺300",
|
||||||
|
"products.pricing.founder.period": "/ Month",
|
||||||
|
"products.pricing.founder.yearlyPrice": "₺1,100 / Year",
|
||||||
|
"products.pricing.founder.description": "Management capability via iOS and Android",
|
||||||
|
|
||||||
|
|
||||||
// Contact Page
|
// Contact Page
|
||||||
"contact.title": "Contact",
|
"contact.title": "Contact",
|
||||||
"contact.subtitle": "Get in touch with us for any inquiries",
|
"contact.subtitle": "Get in touch with us for any inquiries",
|
||||||
|
|
@ -528,7 +686,7 @@ const translations = {
|
||||||
"about.stats.support": "24/7 Support",
|
"about.stats.support": "24/7 Support",
|
||||||
"about.stats.countries": "Countries",
|
"about.stats.countries": "Countries",
|
||||||
"about.description.part1":
|
"about.description.part1":
|
||||||
"Sözsoft Information Technologies was founded in 2012 under the brand kursyazilimi.com to contribute to the digital transformation of the education sector. Our foundation is built on over 15 years of software experience and a strong background gained across various industries. Our expert team, which has developed large-scale software solutions for leading textile companies for many years, now channels its experience into the dynamic needs of the education sector by delivering innovative projects. At Sözsoft, we don’t just develop software; we aim to create real business value by building sustainable and user-friendly systems tailored to institutions. Guided by the principle of 'exclusive service beyond the ordinary and constant accessibility', our team supports educational institutions in digitizing their operational processes to enhance efficiency and adapt to the demands of the modern age. Today, Sözsoft proudly serves as a trusted technology partner for educational institutions across Turkey.",
|
"Sözsoft Information Technologies was founded in 2012 under the brand sozsoft.com to contribute to the digital transformation of the education sector. Our foundation is built on over 15 years of software experience and a strong background gained across various industries. Our expert team, which has developed large-scale software solutions for leading textile companies for many years, now channels its experience into the dynamic needs of the education sector by delivering innovative projects. At Sözsoft, we don’t just develop software; we aim to create real business value by building sustainable and user-friendly systems tailored to institutions. Guided by the principle of 'exclusive service beyond the ordinary and constant accessibility', our team supports educational institutions in digitizing their operational processes to enhance efficiency and adapt to the demands of the modern age. Today, Sözsoft proudly serves as a trusted technology partner for educational institutions across Turkey.",
|
||||||
"about.description.motto":
|
"about.description.motto":
|
||||||
'"Our passion is technology, our goal is sustainable efficiency."',
|
'"Our passion is technology, our goal is sustainable efficiency."',
|
||||||
"about.description.part2":
|
"about.description.part2":
|
||||||
|
|
|
||||||
|
|
@ -1,89 +1,157 @@
|
||||||
import React from 'react';
|
import React from "react";
|
||||||
import { ArrowRight, CheckCircle } from 'lucide-react';
|
import {
|
||||||
import { Link } from 'react-router-dom';
|
ArrowRight,
|
||||||
import { useLanguage } from '../context/LanguageContext';
|
BarChart,
|
||||||
|
BookOpen,
|
||||||
|
CheckCircle,
|
||||||
|
CreditCard,
|
||||||
|
Users,
|
||||||
|
} from "lucide-react";
|
||||||
|
import { Link } from "react-router-dom";
|
||||||
|
import { useLanguage } from "../context/LanguageContext";
|
||||||
|
|
||||||
const Products: React.FC = () => {
|
const Products: React.FC = () => {
|
||||||
const { t } = useLanguage();
|
const { t } = useLanguage();
|
||||||
|
|
||||||
const products = [
|
const products = [
|
||||||
{
|
{
|
||||||
title: t('products.kurs.title'),
|
title: t("products.kurs.title"),
|
||||||
description: t('products.kurs.desc'),
|
description: t("products.kurs.desc"),
|
||||||
image: 'https://images.pexels.com/photos/3183183/pexels-photo-3183183.jpeg?auto=compress&cs=tinysrgb&w=1920',
|
image:
|
||||||
|
"https://images.pexels.com/photos/3183183/pexels-photo-3183183.jpeg?auto=compress&cs=tinysrgb&w=1920",
|
||||||
features: [
|
features: [
|
||||||
t('products.kurs.features.inventory'),
|
t("products.kurs.features.inventory"),
|
||||||
t('products.kurs.features.purchasing'),
|
t("products.kurs.features.purchasing"),
|
||||||
t('products.kurs.features.sales'),
|
t("products.kurs.features.sales"),
|
||||||
t('products.kurs.features.accounting'),
|
t("products.kurs.features.accounting"),
|
||||||
t('products.kurs.features.reporting'),
|
t("products.kurs.features.reporting"),
|
||||||
t('products.kurs.features.mobile')
|
t("products.kurs.features.mobile"),
|
||||||
]
|
],
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const modules = [
|
||||||
|
{
|
||||||
|
image:
|
||||||
|
"https://images.pexels.com/photos/3183183/pexels-photo-3183183.jpeg?auto=compress&cs=tinysrgb&w=1920",
|
||||||
|
title: t("products.modules.sales.title"),
|
||||||
|
icon: <Users className="w-16 h-16 text-white" />,
|
||||||
|
features: [
|
||||||
|
t("products.modules.sales.features.appointment"),
|
||||||
|
t("products.modules.sales.features.meeting"),
|
||||||
|
t("products.modules.sales.features.campaign"),
|
||||||
|
t("products.modules.sales.features.adStats"),
|
||||||
|
t("products.modules.sales.features.applicant"),
|
||||||
|
t("products.modules.sales.features.corporate"),
|
||||||
|
t("products.modules.sales.features.consultant"),
|
||||||
|
],
|
||||||
|
color: "bg-blue-600",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('products.crm.title'),
|
description: t("products.crm.desc"),
|
||||||
description: t('products.crm.desc'),
|
image:
|
||||||
image: 'https://images.pexels.com/photos/3184291/pexels-photo-3184291.jpeg?auto=compress&cs=tinysrgb&w=1920',
|
"https://images.pexels.com/photos/3184291/pexels-photo-3184291.jpeg?auto=compress&cs=tinysrgb&w=1920",
|
||||||
|
title: t("products.modules.student.title"),
|
||||||
|
icon: <BookOpen className="w-16 h-16 text-white" />,
|
||||||
features: [
|
features: [
|
||||||
t('products.crm.features.tracking'),
|
t("products.modules.student.features.sales"),
|
||||||
t('products.crm.features.opportunities'),
|
t("products.modules.student.features.contract"),
|
||||||
t('products.crm.features.email'),
|
t("products.modules.student.features.installment"),
|
||||||
t('products.crm.features.tasks'),
|
t("products.modules.student.features.level"),
|
||||||
t('products.crm.features.calendar'),
|
t("products.modules.student.features.attendance"),
|
||||||
t('products.crm.features.analytics')
|
t("products.modules.student.features.exam"),
|
||||||
]
|
t("products.modules.student.features.homework"),
|
||||||
|
],
|
||||||
|
color: "bg-purple-600",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('products.ecommerce.title'),
|
description: t("products.ecommerce.desc"),
|
||||||
description: t('products.ecommerce.desc'),
|
image:
|
||||||
image: 'https://images.pexels.com/photos/3183132/pexels-photo-3183132.jpeg?auto=compress&cs=tinysrgb&w=1920',
|
"https://images.pexels.com/photos/3183132/pexels-photo-3183132.jpeg?auto=compress&cs=tinysrgb&w=1920",
|
||||||
|
title: t("products.modules.accounting.title"),
|
||||||
|
icon: <CreditCard className="w-16 h-16 text-white" />,
|
||||||
features: [
|
features: [
|
||||||
t('products.ecommerce.features.responsive'),
|
t("products.modules.accounting.features.cash"),
|
||||||
t('products.ecommerce.features.payment'),
|
t("products.modules.accounting.features.bank"),
|
||||||
t('products.ecommerce.features.inventory'),
|
t("products.modules.accounting.features.current"),
|
||||||
t('products.ecommerce.features.seo'),
|
t("products.modules.accounting.features.teacherFee"),
|
||||||
t('products.ecommerce.features.analytics'),
|
t("products.modules.accounting.features.consultantCommission"),
|
||||||
t('products.ecommerce.features.marketplace')
|
t("products.modules.accounting.features.personnelSalary"),
|
||||||
]
|
t("products.modules.accounting.features.incomeExpense"),
|
||||||
|
],
|
||||||
|
color: "bg-green-600",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('products.hr.title'),
|
description: t("products.hr.desc"),
|
||||||
description: t('products.hr.desc'),
|
image:
|
||||||
image: 'https://images.pexels.com/photos/3184292/pexels-photo-3184292.jpeg?auto=compress&cs=tinysrgb&w=1920',
|
"https://images.pexels.com/photos/3184292/pexels-photo-3184292.jpeg?auto=compress&cs=tinysrgb&w=1920",
|
||||||
|
title: t("products.modules.reporting.title"),
|
||||||
|
icon: <BarChart className="w-16 h-16 text-white" />,
|
||||||
features: [
|
features: [
|
||||||
t('products.hr.features.personnel'),
|
t("products.modules.reporting.features.dynamic"),
|
||||||
t('products.hr.features.leave'),
|
t("products.modules.reporting.features.ready"),
|
||||||
t('products.hr.features.performance'),
|
t("products.modules.reporting.features.periodic"),
|
||||||
t('products.hr.features.payroll'),
|
t("products.modules.reporting.features.performance"),
|
||||||
t('products.hr.features.training'),
|
t("products.modules.reporting.features.branch"),
|
||||||
t('products.hr.features.digital')
|
t("products.modules.reporting.features.financial"),
|
||||||
]
|
t("products.modules.reporting.features.studentSuccess"),
|
||||||
}
|
],
|
||||||
|
color: "bg-red-600",
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const pricing = [
|
||||||
|
{
|
||||||
|
title: t("products.pricing.user.title"),
|
||||||
|
price: t("products.pricing.user.price"),
|
||||||
|
period: t("products.pricing.user.period"),
|
||||||
|
yearlyPrice: t("products.pricing.user.yearlyPrice"),
|
||||||
|
description: t("products.pricing.user.description"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("products.pricing.teacher.title"),
|
||||||
|
price: t("products.pricing.teacher.price"),
|
||||||
|
period: t("products.pricing.teacher.period"),
|
||||||
|
yearlyPrice: t("products.pricing.teacher.yearlyPrice"),
|
||||||
|
description: t("products.pricing.teacher.description"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("products.pricing.founder.title"),
|
||||||
|
price: t("products.pricing.founder.price"),
|
||||||
|
period: t("products.pricing.founder.period"),
|
||||||
|
yearlyPrice: t("products.pricing.founder.yearlyPrice"),
|
||||||
|
description: t("products.pricing.founder.description"),
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="min-h-screen bg-gray-50">
|
<div className="min-h-screen bg-gray-50">
|
||||||
{/* Hero Section */}
|
{/* Hero Section */}
|
||||||
<div className="relative bg-blue-900 text-white py-24">
|
<div className="relative bg-blue-900 text-white py-24">
|
||||||
<div className="absolute inset-0 opacity-20" style={{
|
<div
|
||||||
backgroundImage: 'url("https://images.pexels.com/photos/3183150/pexels-photo-3183150.jpeg?auto=compress&cs=tinysrgb&w=1920")',
|
className="absolute inset-0 opacity-20"
|
||||||
backgroundSize: 'cover',
|
style={{
|
||||||
backgroundPosition: 'center',
|
backgroundImage:
|
||||||
}}></div>
|
'url("https://images.pexels.com/photos/3183150/pexels-photo-3183150.jpeg?auto=compress&cs=tinysrgb&w=1920")',
|
||||||
|
backgroundSize: "cover",
|
||||||
|
backgroundPosition: "center",
|
||||||
|
}}
|
||||||
|
></div>
|
||||||
<div className="container mx-auto pt-16 px-4 relative">
|
<div className="container mx-auto pt-16 px-4 relative">
|
||||||
<h1 className="text-5xl font-bold mb-6">{t('products.title')}</h1>
|
<h1 className="text-5xl font-bold mb-6">{t("products.title")}</h1>
|
||||||
<p className="text-xl max-w-3xl">
|
<p className="text-xl max-w-3xl">{t("products.subtitle")}</p>
|
||||||
{t('products.subtitle')}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Products Grid */}
|
{/* Products Grid */}
|
||||||
<div className="py-16">
|
<div className="py-10">
|
||||||
<div className="container mx-auto px-4">
|
<div className="container mx-auto px-4">
|
||||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8">
|
<div className="grid grid-cols-1 lg:grid-cols-1 gap-8">
|
||||||
{products.map((product, index) => (
|
{products.map((product, index) => (
|
||||||
<div key={index} className="bg-white rounded-xl shadow-lg overflow-hidden">
|
<div
|
||||||
|
key={index}
|
||||||
|
className="bg-white rounded-xl shadow-lg overflow-hidden"
|
||||||
|
>
|
||||||
<div className="aspect-w-16 aspect-h-9">
|
<div className="aspect-w-16 aspect-h-9">
|
||||||
<img
|
<img
|
||||||
src={product.image}
|
src={product.image}
|
||||||
|
|
@ -92,7 +160,9 @@ const Products: React.FC = () => {
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="p-8">
|
<div className="p-8">
|
||||||
<h2 className="text-2xl font-bold text-gray-900 mb-4">{product.title}</h2>
|
<h2 className="text-2xl font-bold text-gray-900 mb-4">
|
||||||
|
{product.title}
|
||||||
|
</h2>
|
||||||
<p className="text-gray-600 mb-6">{product.description}</p>
|
<p className="text-gray-600 mb-6">{product.description}</p>
|
||||||
<div className="space-y-3">
|
<div className="space-y-3">
|
||||||
{product.features.map((feature, fIndex) => (
|
{product.features.map((feature, fIndex) => (
|
||||||
|
|
@ -102,13 +172,6 @@ const Products: React.FC = () => {
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<Link
|
|
||||||
to="/contact"
|
|
||||||
className="mt-8 flex items-center space-x-2 bg-blue-600 text-white px-6 py-3 rounded-lg hover:bg-blue-700 transition-colors"
|
|
||||||
>
|
|
||||||
<span>{t('common.learnMore')}</span>
|
|
||||||
<ArrowRight size={20} />
|
|
||||||
</Link>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
|
|
@ -116,18 +179,60 @@ const Products: React.FC = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Modules Grid */}
|
||||||
|
<div className="py-10">
|
||||||
|
<div className="container mx-auto px-4">
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
|
||||||
|
{modules.map((module, index) => (
|
||||||
|
<div
|
||||||
|
key={index}
|
||||||
|
className={`${module.color} rounded-xl p-8 text-white`}
|
||||||
|
>
|
||||||
|
<div className="mb-6">{module.icon}</div>
|
||||||
|
<h3 className="text-2xl font-bold mb-6">{module.title}</h3>
|
||||||
|
<ul className="space-y-3">
|
||||||
|
{module.features.map((feature, fIndex) => (
|
||||||
|
<li key={fIndex} className="flex items-center space-x-2">
|
||||||
|
<CheckCircle className="w-5 h-5 flex-shrink-0" />
|
||||||
|
<span>{feature}</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Pricing Section */}
|
||||||
|
<div className="py-10 bg-white">
|
||||||
|
<div className="container mx-auto px-4">
|
||||||
|
<h2 className="text-3xl font-bold text-center mb-10">
|
||||||
|
{t("products.pricing.title")}
|
||||||
|
</h2>
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
|
||||||
|
{pricing.map((plan, index) => (
|
||||||
|
<div key={index} className="bg-white rounded-xl shadow-lg p-8 hover:shadow-xl transition-shadow">
|
||||||
|
<h3 className="text-xl font-bold mb-4">{plan.title}</h3>
|
||||||
|
<p className="text-gray-600 mb-8">{plan.description}</p>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Call to Action */}
|
{/* Call to Action */}
|
||||||
<div className="bg-blue-900 text-white py-16">
|
<div className="bg-blue-900 text-white py-16">
|
||||||
<div className="container mx-auto px-4 text-center">
|
<div className="container mx-auto px-4 text-center">
|
||||||
<h2 className="text-3xl font-bold mb-6">{t('products.cta.title')}</h2>
|
<h2 className="text-3xl font-bold mb-6">{t("products.cta.title")}</h2>
|
||||||
<p className="text-xl mb-8 max-w-2xl mx-auto">
|
<p className="text-xl mb-8 max-w-2xl mx-auto">
|
||||||
{t('products.cta.description')}
|
{t("products.cta.description")}
|
||||||
</p>
|
</p>
|
||||||
<Link
|
<Link
|
||||||
to="/demo"
|
to="/contact"
|
||||||
className="bg-white text-blue-900 px-8 py-3 rounded-lg font-semibold hover:bg-blue-50 transition-colors"
|
className="bg-white text-blue-900 px-8 py-3 rounded-lg font-semibold hover:bg-blue-50 transition-colors"
|
||||||
>
|
>
|
||||||
{t('products.cta.demo')}
|
{t("products.cta.demo")}
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,17 @@
|
||||||
import React from 'react';
|
import React from "react";
|
||||||
import { Code2, Database, Globe2, Smartphone, Server, Users, Shield, Settings } from 'lucide-react';
|
import {
|
||||||
import { Link } from 'react-router-dom';
|
Code2,
|
||||||
import { useLanguage } from '../context/LanguageContext';
|
Database,
|
||||||
|
Globe2,
|
||||||
|
Smartphone,
|
||||||
|
Server,
|
||||||
|
Users,
|
||||||
|
Shield,
|
||||||
|
Settings,
|
||||||
|
CheckCircle,
|
||||||
|
} from "lucide-react";
|
||||||
|
import { Link } from "react-router-dom";
|
||||||
|
import { useLanguage } from "../context/LanguageContext";
|
||||||
|
|
||||||
const Services: React.FC = () => {
|
const Services: React.FC = () => {
|
||||||
const { t } = useLanguage();
|
const { t } = useLanguage();
|
||||||
|
|
@ -9,92 +19,133 @@ const Services: React.FC = () => {
|
||||||
const services = [
|
const services = [
|
||||||
{
|
{
|
||||||
icon: <Code2 className="w-12 h-12 text-blue-600" />,
|
icon: <Code2 className="w-12 h-12 text-blue-600" />,
|
||||||
title: t('services.software.title'),
|
title: t("services.software.title"),
|
||||||
description: t('services.software.desc'),
|
description: t("services.software.desc"),
|
||||||
features: [
|
features: [
|
||||||
t('services.software.features.analysis'),
|
t("services.software.features.analysis"),
|
||||||
t('services.software.features.design'),
|
t("services.software.features.design"),
|
||||||
t('services.software.features.development'),
|
t("services.software.features.development"),
|
||||||
t('services.software.features.testing'),
|
t("services.software.features.testing"),
|
||||||
t('services.software.features.maintenance')
|
t("services.software.features.maintenance"),
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Globe2 className="w-12 h-12 text-purple-600" />,
|
icon: <Users className="w-12 h-12 text-purple-600" />,
|
||||||
title: t('services.web.title'),
|
title: t("services.web.title"),
|
||||||
description: t('services.web.desc'),
|
description: t("services.web.desc"),
|
||||||
features: [
|
features: [
|
||||||
t('services.web.features.frontend'),
|
t("services.web.features.frontend"),
|
||||||
t('services.web.features.backend'),
|
t("services.web.features.backend"),
|
||||||
t('services.web.features.api'),
|
t("services.web.features.api"),
|
||||||
t('services.web.features.seo'),
|
t("services.web.features.seo"),
|
||||||
t('services.web.features.performance')
|
t("services.web.features.performance"),
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Smartphone className="w-12 h-12 text-green-600" />,
|
icon: <Shield className="w-12 h-12 text-green-600" />,
|
||||||
title: t('services.mobile.title'),
|
title: t("services.mobile.title"),
|
||||||
description: t('services.mobile.desc'),
|
description: t("services.mobile.desc"),
|
||||||
features: [
|
features: [
|
||||||
t('services.mobile.features.design'),
|
t("services.mobile.features.design"),
|
||||||
t('services.mobile.features.native'),
|
t("services.mobile.features.native"),
|
||||||
t('services.mobile.features.cross'),
|
t("services.mobile.features.cross"),
|
||||||
t('services.mobile.features.push'),
|
t("services.mobile.features.push"),
|
||||||
t('services.mobile.features.store')
|
t("services.mobile.features.store"),
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Database className="w-12 h-12 text-red-600" />,
|
icon: <Server className="w-12 h-12 text-red-600" />,
|
||||||
title: t('services.database.title'),
|
title: t("services.database.title"),
|
||||||
description: t('services.database.desc'),
|
description: t("services.database.desc"),
|
||||||
features: [
|
features: [
|
||||||
t('services.database.features.design'),
|
t("services.database.features.design"),
|
||||||
t('services.database.features.optimization'),
|
t("services.database.features.optimization"),
|
||||||
t('services.database.features.migration'),
|
t("services.database.features.migration"),
|
||||||
t('services.database.features.backup'),
|
t("services.database.features.backup"),
|
||||||
t('services.database.features.recovery')
|
t("services.database.features.recovery"),
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Server className="w-12 h-12 text-yellow-600" />,
|
icon: <Globe2 className="w-12 h-12 text-yellow-600" />,
|
||||||
title: t('services.integration.title'),
|
title: t("services.integration.title"),
|
||||||
description: t('services.integration.desc'),
|
description: t("services.integration.desc"),
|
||||||
features: [
|
features: [
|
||||||
t('services.integration.features.api'),
|
t("services.integration.features.api"),
|
||||||
t('services.integration.features.middleware'),
|
t("services.integration.features.middleware"),
|
||||||
t('services.integration.features.legacy'),
|
t("services.integration.features.legacy"),
|
||||||
t('services.integration.features.realtime'),
|
t("services.integration.features.realtime"),
|
||||||
t('services.integration.features.monitoring')
|
t("services.integration.features.monitoring"),
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
icon: <Users className="w-12 h-12 text-indigo-600" />,
|
icon: <Settings className="w-12 h-12 text-indigo-600" />,
|
||||||
title: t('services.consulting.title'),
|
title: t("services.consulting.title"),
|
||||||
description: t('services.consulting.desc'),
|
description: t("services.consulting.desc"),
|
||||||
features: [
|
features: [
|
||||||
t('services.consulting.features.tech'),
|
t("services.consulting.features.tech"),
|
||||||
t('services.consulting.features.project'),
|
t("services.consulting.features.project"),
|
||||||
t('services.consulting.features.digital'),
|
t("services.consulting.features.digital"),
|
||||||
t('services.consulting.features.risk'),
|
t("services.consulting.features.risk"),
|
||||||
t('services.consulting.features.training')
|
t("services.consulting.features.training"),
|
||||||
]
|
],
|
||||||
}
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const supportPlans = [
|
||||||
|
{
|
||||||
|
title: t("services.support.branchRemote.title"),
|
||||||
|
price: t("services.support.branchRemote.price"),
|
||||||
|
period: t("services.support.branchRemote.period"),
|
||||||
|
features: [
|
||||||
|
t("services.support.branchRemote.features.priority"),
|
||||||
|
t("services.support.branchRemote.features.remote"),
|
||||||
|
t("services.support.branchRemote.features.optimization"),
|
||||||
|
t("services.support.branchRemote.features.maintenance"),
|
||||||
|
t("services.support.branchRemote.features.consulting"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("services.support.backup.title"),
|
||||||
|
price: t("services.support.backup.price"),
|
||||||
|
period: t("services.support.backup.period"),
|
||||||
|
features: [
|
||||||
|
t("services.support.backup.features.daily"),
|
||||||
|
t("services.support.backup.features.encrypted"),
|
||||||
|
t("services.support.backup.features.recovery"),
|
||||||
|
t("services.support.backup.features.verification"),
|
||||||
|
t("services.support.backup.features.access"),
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t("services.support.sms.title"),
|
||||||
|
price: t("services.support.sms.price"),
|
||||||
|
period: t("services.support.sms.period"),
|
||||||
|
features: [
|
||||||
|
t("services.support.sms.features.packages"),
|
||||||
|
t("services.support.sms.features.bulk"),
|
||||||
|
t("services.support.sms.features.template"),
|
||||||
|
t("services.support.sms.features.reporting"),
|
||||||
|
t("services.support.sms.features.api"),
|
||||||
|
],
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="min-h-screen bg-gray-50">
|
<div className="min-h-screen bg-gray-50">
|
||||||
{/* Hero Section */}
|
{/* Hero Section */}
|
||||||
<div className="relative bg-blue-900 text-white py-24">
|
<div className="relative bg-blue-900 text-white py-24">
|
||||||
<div className="absolute inset-0 opacity-20" style={{
|
<div
|
||||||
backgroundImage: 'url("https://images.pexels.com/photos/3183173/pexels-photo-3183173.jpeg?auto=compress&cs=tinysrgb&w=1920")',
|
className="absolute inset-0 opacity-20"
|
||||||
backgroundSize: 'cover',
|
style={{
|
||||||
backgroundPosition: 'center',
|
backgroundImage:
|
||||||
}}></div>
|
'url("https://images.pexels.com/photos/3183173/pexels-photo-3183173.jpeg?auto=compress&cs=tinysrgb&w=1920")',
|
||||||
|
backgroundSize: "cover",
|
||||||
|
backgroundPosition: "center",
|
||||||
|
}}
|
||||||
|
></div>
|
||||||
<div className="container mx-auto pt-16 px-4 relative">
|
<div className="container mx-auto pt-16 px-4 relative">
|
||||||
<h1 className="text-5xl font-bold mb-6">{t('services.title')}</h1>
|
<h1 className="text-5xl font-bold mb-6">{t("services.title")}</h1>
|
||||||
<p className="text-xl max-w-3xl">
|
<p className="text-xl max-w-3xl">{t("services.subtitle")}</p>
|
||||||
{t('services.subtitle')}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -103,13 +154,21 @@ const Services: React.FC = () => {
|
||||||
<div className="container mx-auto px-4">
|
<div className="container mx-auto px-4">
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||||
{services.map((service, index) => (
|
{services.map((service, index) => (
|
||||||
<div key={index} className="bg-white rounded-xl shadow-lg p-8 hover:shadow-xl transition-shadow">
|
<div
|
||||||
|
key={index}
|
||||||
|
className="bg-white rounded-xl shadow-lg p-8 hover:shadow-xl transition-shadow"
|
||||||
|
>
|
||||||
<div className="mb-6">{service.icon}</div>
|
<div className="mb-6">{service.icon}</div>
|
||||||
<h3 className="text-2xl font-bold text-gray-900 mb-4">{service.title}</h3>
|
<h3 className="text-2xl font-bold text-gray-900 mb-4">
|
||||||
|
{service.title}
|
||||||
|
</h3>
|
||||||
<p className="text-gray-600 mb-6">{service.description}</p>
|
<p className="text-gray-600 mb-6">{service.description}</p>
|
||||||
<ul className="space-y-2">
|
<ul className="space-y-2">
|
||||||
{service.features.map((feature, fIndex) => (
|
{service.features.map((feature, fIndex) => (
|
||||||
<li key={fIndex} className="flex items-center text-gray-700">
|
<li
|
||||||
|
key={fIndex}
|
||||||
|
className="flex items-center text-gray-700"
|
||||||
|
>
|
||||||
<span className="w-2 h-2 bg-blue-600 rounded-full mr-2"></span>
|
<span className="w-2 h-2 bg-blue-600 rounded-full mr-2"></span>
|
||||||
{feature}
|
{feature}
|
||||||
</li>
|
</li>
|
||||||
|
|
@ -121,18 +180,55 @@ const Services: React.FC = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{/* Support Plans */}
|
||||||
|
<div className="bg-white py-10">
|
||||||
|
<div className="container mx-auto px-4">
|
||||||
|
<h2 className="text-3xl font-bold text-center mb-10">
|
||||||
|
{t("services.support.title")}
|
||||||
|
</h2>
|
||||||
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-8">
|
||||||
|
{supportPlans.map((plan, index) => (
|
||||||
|
<div
|
||||||
|
key={index}
|
||||||
|
className="bg-white rounded-xl shadow-lg p-8 border border-gray-200"
|
||||||
|
>
|
||||||
|
<h3 className="text-xl font-bold mb-4">{plan.title}</h3>
|
||||||
|
|
||||||
|
<ul className="space-y-3 mb-8">
|
||||||
|
{plan.features.map((feature, fIndex) => (
|
||||||
|
<li
|
||||||
|
key={fIndex}
|
||||||
|
className="flex items-center space-x-2 text-gray-700"
|
||||||
|
>
|
||||||
|
<CheckCircle className="w-5 h-5 text-green-500 flex-shrink-0" />
|
||||||
|
<span>{feature}</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
<Link
|
||||||
|
to="/contact"
|
||||||
|
className="block text-center bg-blue-600 text-white px-6 py-3 rounded-lg hover:bg-blue-700 transition-colors"
|
||||||
|
>
|
||||||
|
{t("services.support.contactButton")}
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
{/* Call to Action */}
|
{/* Call to Action */}
|
||||||
<div className="bg-blue-900 text-white py-16">
|
<div className="bg-blue-900 text-white py-16">
|
||||||
<div className="container mx-auto px-4 text-center">
|
<div className="container mx-auto px-4 text-center">
|
||||||
<h2 className="text-3xl font-bold mb-6">{t('services.cta.title')}</h2>
|
<h2 className="text-3xl font-bold mb-6">{t("services.cta.title")}</h2>
|
||||||
<p className="text-xl mb-8 max-w-2xl mx-auto">
|
<p className="text-xl mb-8 max-w-2xl mx-auto">
|
||||||
{t('services.cta.description')}
|
{t("services.cta.description")}
|
||||||
</p>
|
</p>
|
||||||
<Link
|
<Link
|
||||||
to="/contact"
|
to="/contact"
|
||||||
className="bg-white text-blue-900 px-8 py-3 rounded-lg font-semibold hover:bg-blue-50 transition-colors"
|
className="bg-white text-blue-900 px-8 py-3 rounded-lg font-semibold hover:bg-blue-50 transition-colors"
|
||||||
>
|
>
|
||||||
{t('services.cta.contact')}
|
{t("services.cta.contact")}
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict';
|
||||||
"revision": "3ca0b8505b4bec776b69afdba2768812"
|
"revision": "3ca0b8505b4bec776b69afdba2768812"
|
||||||
}, {
|
}, {
|
||||||
"url": "index.html",
|
"url": "index.html",
|
||||||
"revision": "0.v26qf4kt408"
|
"revision": "0.8un1j0slu5o"
|
||||||
}], {});
|
}], {});
|
||||||
workbox.cleanupOutdatedCaches();
|
workbox.cleanupOutdatedCaches();
|
||||||
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {
|
workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), {
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ const SideNav = () => {
|
||||||
style={sideNavCollapse ? sideNavCollapseStyle : sideNavStyle}
|
style={sideNavCollapse ? sideNavCollapseStyle : sideNavStyle}
|
||||||
className={classNames('side-nav', sideNavColor(), !sideNavCollapse && 'side-nav-expand')}
|
className={classNames('side-nav', sideNavColor(), !sideNavCollapse && 'side-nav-expand')}
|
||||||
>
|
>
|
||||||
<div className="side-nav-header">
|
<div className="side-nav-header py-2">
|
||||||
<Logo
|
<Logo
|
||||||
mode={logoMode()}
|
mode={logoMode()}
|
||||||
type={sideNavCollapse ? 'streamline' : 'full'}
|
type={sideNavCollapse ? 'streamline' : 'full'}
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ const StackedSideNavMini = (props: StackedSideNavMiniProps) => {
|
||||||
<Logo mode={logoMode()} type="streamline" className={SIDE_NAV_CONTENT_GUTTER} />
|
<Logo mode={logoMode()} type="streamline" className={SIDE_NAV_CONTENT_GUTTER} />
|
||||||
<ScrollBar autoHide direction={direction}>
|
<ScrollBar autoHide direction={direction}>
|
||||||
<Menu
|
<Menu
|
||||||
className="px-4 pb-4"
|
className="px-4 pb-4 py-1"
|
||||||
variant={navMode}
|
variant={navMode}
|
||||||
defaultActiveKeys={activeKeys || [includedRouteTree.key]}
|
defaultActiveKeys={activeKeys || [includedRouteTree.key]}
|
||||||
>
|
>
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ export const NAV_MODE_DARK = 'dark'
|
||||||
export const NAV_MODE_THEMED = 'themed'
|
export const NAV_MODE_THEMED = 'themed'
|
||||||
export const NAV_MODE_TRANSPARENT = 'transparent'
|
export const NAV_MODE_TRANSPARENT = 'transparent'
|
||||||
|
|
||||||
export const SIDE_NAV_WIDTH = 290
|
export const SIDE_NAV_WIDTH = 330
|
||||||
export const SIDE_NAV_COLLAPSED_WIDTH = 80
|
export const SIDE_NAV_COLLAPSED_WIDTH = 80
|
||||||
export const SPLITTED_SIDE_NAV_MINI_WIDTH = 80
|
export const SPLITTED_SIDE_NAV_MINI_WIDTH = 80
|
||||||
export const SPLITTED_SIDE_NAV_SECONDARY_WIDTH = 250
|
export const SPLITTED_SIDE_NAV_SECONDARY_WIDTH = 250
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue