feat: full Turkish translation + fix meal plan rendering
Some checks failed
CI/CD - Build, Push & Deploy / Build & Push Docker Image (push) Has been cancelled
CI/CD - Build, Push & Deploy / Update GitOps Manifest (push) Has been cancelled

- Translate all user-facing text to Turkish across dietitian.js,
  trainer.js, shopping.js, and index.html
- Fix meal plan not rendering: add frontend-compatible fields
  (macros, meals, recommended_water_liters) to diet plan response
- Translate meal types, diet types, day names, medical notes,
  supplements, tips, injury notes, workout titles
- Translate shopping list categories
- Translate login/register Email labels to E-posta

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 16:28:36 +00:00
parent 910b17342f
commit 0ec75c8afa
4 changed files with 289 additions and 257 deletions

View File

@@ -991,7 +991,7 @@
<div id="loginError" class="error-msg" style="display:none;"></div>
<form onsubmit="handleLogin(event)">
<div class="form-group">
<label>Email</label>
<label>E-posta</label>
<input type="email" id="loginEmail" required placeholder="ornek@email.com">
</div>
<div class="form-group">
@@ -1016,7 +1016,7 @@
<input type="text" id="regName" required placeholder="Adiniz Soyadiniz">
</div>
<div class="form-group">
<label>Email</label>
<label>E-posta</label>
<input type="email" id="regEmail" required placeholder="ornek@email.com">
</div>
<div class="form-group">
@@ -2700,6 +2700,7 @@ async function loadMeal() {
function renderMeal(el) {
var d = mealData;
var mealTypeNames = { breakfast:'Kahvalti', snack:'Ara Ogun', lunch:'Ogle Yemegi', pre_workout:'Antrenman Oncesi', post_workout:'Antrenman Sonrasi', dinner:'Aksam Yemegi' };
var html = '';
// Diet type badge
@@ -2779,7 +2780,7 @@ function renderMeal(el) {
html += '<div class="meal-day-body open">';
d.meals.forEach(function(m) {
html += '<div class="meal-item">';
html += '<div class="meal-type">' + (m.type || '') + '</div>';
html += '<div class="meal-type">' + (mealTypeNames[m.type] || m.type || '') + '</div>';
html += '<div class="meal-name">' + (m.name || '') + '</div>';
html += '<div class="meal-macros">';
html += '<span class="macro-tag macro-cal">' + (m.calories || 0) + ' kcal</span>';

View File

@@ -178,120 +178,120 @@ function getMedicalAdjustments(profile) {
if (profile.has_diabetes) {
adjustments.push({
condition: "Diabetes",
condition: "Diyabet",
actions: [
"Prioritizing low glycemic index foods",
"Limiting added sugars and refined carbs",
"Balanced carb distribution across meals to prevent spikes",
"Including fiber-rich foods for blood sugar stability",
"Dusuk glisemik indeksli gidalar onceliklendiriliyor",
"Eklenmis sekerler ve rafine karbonhidratlar sinirlandiriliyor",
"Seker sivramalarini onlemek icin karbonhidratlar ogunlere dengeli dagildi",
"Kan sekeri dengesi icin lifli gidalar dahil ediliyor",
],
});
}
if (profile.heart_condition) {
adjustments.push({
condition: "Heart Condition",
condition: "Kalp Rahatsizligi",
actions: [
"Sodium limited to under 1500mg daily",
"Emphasis on heart-healthy unsaturated fats",
"Omega-3 rich foods prioritized",
"Avoiding trans fats and excessive saturated fat",
"Sodyum gunluk 1500mg altinda tutuluyor",
"Kalp dostu doymamis yaglara agirlik veriliyor",
"Omega-3 zengini gidalar onceliklendiriliyor",
"Trans yaglar ve asiri doymus yaglardan kaciniliyor",
],
});
}
if (profile.blood_pressure === "high") {
adjustments.push({
condition: "High Blood Pressure",
condition: "Yuksek Tansiyon",
actions: [
"Following DASH diet principles",
"Low sodium meals selected",
"Potassium-rich foods included",
"Limiting processed foods",
"DASH diyeti ilkeleri uygulaniyorr",
"Dusuk sodyumlu ogunler seciliyor",
"Potasyum zengini gidalar dahil ediliyor",
"Islenmis gidalar sinirlandiriliyor",
],
});
}
if (profile.has_arthritis) {
adjustments.push({
condition: "Arthritis",
condition: "Artrit",
actions: [
"Anti-inflammatory foods prioritized",
"Omega-3 fatty acid rich meals",
"Turmeric and ginger included where possible",
"Avoiding processed and fried foods",
"Anti-enflamatuar gidalar onceliklendiriliyor",
"Omega-3 yag asidi zengini ogunler",
"Mumkun olan yerlerde zerdecal ve zencefil dahil ediliyor",
"Islenmis ve kizartilmis gidalardan kaciniliyor",
],
});
}
if (profile.has_osteoporosis) {
adjustments.push({
condition: "Osteoporosis",
condition: "Osteoporoz",
actions: [
"High calcium foods included",
"Vitamin D rich foods prioritized",
"Limiting excessive caffeine",
"Adequate protein for bone maintenance",
"Yuksek kalsiyumlu gidalar dahil ediliyor",
"D vitamini zengini gidalar onceliklendiriliyor",
"Asiri kafein tuketimi sinirlandiriliyor",
"Kemik sagligi icin yeterli protein saglaniyor",
],
});
}
if (profile.has_fibromyalgia) {
adjustments.push({
condition: "Fibromyalgia",
condition: "Fibromiyalji",
actions: [
"Anti-inflammatory diet approach",
"Avoiding processed foods and artificial additives",
"Gluten reduction considered",
"Magnesium-rich foods included",
"Anti-enflamatuar beslenme yaklasimi",
"Islenmis gidalar ve yapay katki maddelerinden kaciniliyor",
"Gluten azaltimi degerlendiriliyor",
"Magnezyum zengini gidalar dahil ediliyor",
],
});
}
if (profile.has_thyroid) {
adjustments.push({
condition: "Thyroid Condition",
condition: "Tiroid Rahatsizligi",
actions: [
"Iodine-aware food selection",
"Selenium-rich foods included",
"Limiting soy products if hypothyroid",
"Avoiding excessive cruciferous vegetables raw",
"Iyot icerigi dikkate alinarak gida secimi yapiliyor",
"Selenyum zengini gidalar dahil ediliyor",
"Hipotiroidide soya urunleri sinirlandiriliyor",
"Asiri cig cruciferous sebze tuketiminden kaciniliyor",
],
});
}
if (profile.cholesterol_level === "high") {
adjustments.push({
condition: "High Cholesterol",
condition: "Yuksek Kolesterol",
actions: [
"Low saturated fat meals selected",
"High soluble fiber foods included",
"Plant sterol sources prioritized",
"Oat and legume-based meals favored",
"Dusuk doymus yag iceren ogunler seciliyor",
"Yuksek cozunur lif iceren gidalar dahil ediliyor",
"Bitkisel sterol kaynaklari onceliklendiriliyor",
"Yulaf ve baklagil bazli ogunler tercih ediliyor",
],
});
}
if (profile.has_asthma) {
adjustments.push({
condition: "Asthma",
condition: "Astim",
actions: [
"Anti-inflammatory foods included",
"Vitamin D rich foods prioritized",
"Magnesium-rich foods for bronchial relaxation",
"Avoiding sulfites and common triggers",
"Anti-enflamatuar gidalar dahil ediliyor",
"D vitamini zengini gidalar onceliklendiriliyor",
"Bronsiyal gevseme icin magnezyum zengini gidalar",
"Sulfitlerden ve yaygin tetikleyicilerden kaciniliyor",
],
});
}
if (profile.mental_health && profile.mental_health !== "none") {
adjustments.push({
condition: "Mental Health Support",
condition: "Ruh Sagligi Destegi",
actions: [
"Omega-3 fatty acid rich meals",
"B vitamin sources included",
"Probiotic and fermented foods for gut-brain axis",
"Tryptophan-rich foods for serotonin support",
"Omega-3 yag asidi zengini ogunler",
"B vitamini kaynaklari dahil ediliyor",
"Bagirsak-beyin ekseni icin probiyotik ve fermente gidalar",
"Serotonin destegi icin triptofan zengini gidalar",
],
});
}
@@ -309,25 +309,25 @@ function getSupplements(profile, dietType) {
supplements.push({
name: "Multivitamin",
dosage: "1 tablet daily",
rationale: "Baseline nutritional insurance for any dietary plan",
rationale: "Her beslenme plani icin temel besin sigortasi",
});
supplements.push({
name: "Vitamin D3",
dosage: "1000-2000 IU daily",
rationale: "Supports bone health, immune function, and mood regulation",
rationale: "Kemik sagligi, bagisiklik sistemi ve ruh hali duzenlemesini destekler",
});
if ((profile.goal || "").split(",").map((s) => s.trim()).includes("build_muscle") || dietType === "high_protein") {
supplements.push({
name: "Whey Protein (or plant-based protein)",
dosage: "25-30g post-workout",
rationale: "Supports muscle protein synthesis and recovery",
rationale: "Kas protein sentezini ve toparlanmayi destekler",
});
supplements.push({
name: "Creatine Monohydrate",
dosage: "5g daily",
rationale: "Improves strength output and muscle cell hydration",
rationale: "Guc ciktisini ve kas hucresi hidrasyonunu arttirir",
});
}
@@ -335,18 +335,18 @@ function getSupplements(profile, dietType) {
supplements.push({
name: "Omega-3 Fish Oil",
dosage: "2000-3000mg EPA/DHA daily",
rationale: "Potent anti-inflammatory, reduces joint pain and stiffness",
rationale: "Guclu anti-enflamatuar, eklem agrisi ve sertligini azaltir",
});
supplements.push({
name: "Turmeric/Curcumin",
dosage: "500-1000mg with piperine daily",
rationale: "Natural anti-inflammatory, enhances joint comfort",
rationale: "Dogal anti-enflamatuar, eklem rahatligi saglar",
});
} else {
supplements.push({
name: "Omega-3 Fish Oil",
dosage: "1000mg EPA/DHA daily",
rationale: "Supports heart health, brain function, and reduces inflammation",
rationale: "Kalp sagligi, beyin fonksiyonu destekler ve iltihaplanmayi azaltir",
});
}
@@ -354,12 +354,12 @@ function getSupplements(profile, dietType) {
supplements.push({
name: "Calcium",
dosage: "500-600mg twice daily",
rationale: "Essential for bone density maintenance and prevention of fractures",
rationale: "Kemik yogunlugu korunmasi ve kirik onlenmesi icin gereklidir",
});
supplements.push({
name: "Vitamin K2",
dosage: "100mcg daily",
rationale: "Directs calcium to bones rather than arteries",
rationale: "Kalsiyumu damarlar yerine kemiklere yonlendirir",
});
}
@@ -367,12 +367,12 @@ function getSupplements(profile, dietType) {
supplements.push({
name: "Chromium Picolinate",
dosage: "200mcg daily",
rationale: "May improve insulin sensitivity and glucose metabolism",
rationale: "Insulin duyarliligini ve glukoz metabolizmasini iyilestirebilir",
});
supplements.push({
name: "Alpha-Lipoic Acid",
dosage: "300-600mg daily",
rationale: "Antioxidant that supports nerve health and blood sugar regulation",
rationale: "Sinir sagligi ve kan sekeri duzenlemesini destekleyen antioksidan",
});
}
@@ -380,12 +380,12 @@ function getSupplements(profile, dietType) {
supplements.push({
name: "Magnesium Glycinate",
dosage: "400mg daily",
rationale: "Supports healthy blood pressure and cardiovascular function",
rationale: "Saglikli kan basinci ve kardiyovaskuler fonksiyonu destekler",
});
supplements.push({
name: "CoQ10",
dosage: "100-200mg daily",
rationale: "Supports heart muscle energy production and overall cardiac health",
rationale: "Kalp kasi enerji uretimini ve genel kalp sagligini destekler",
});
}
@@ -393,7 +393,7 @@ function getSupplements(profile, dietType) {
supplements.push({
name: "Selenium",
dosage: "200mcg daily",
rationale: "Critical for thyroid hormone conversion and gland protection",
rationale: "Tiroid hormonu donusumu ve bez korumasi icin kritik oneme sahiptir",
});
}
@@ -401,12 +401,12 @@ function getSupplements(profile, dietType) {
supplements.push({
name: "B-Complex",
dosage: "1 capsule daily",
rationale: "Supports neurotransmitter production, energy, and mood stability",
rationale: "Norotransmiter uretimi, enerji ve ruh hali dengesini destekler",
});
supplements.push({
name: "Probiotic",
dosage: "10-20 billion CFU daily",
rationale: "Gut-brain axis support for mood and cognitive function",
rationale: "Ruh hali ve bilissel fonksiyon icin bagirsak-beyin ekseni destegi",
});
}
@@ -414,17 +414,17 @@ function getSupplements(profile, dietType) {
supplements.push({
name: "Vitamin B12",
dosage: "1000mcg daily",
rationale: "Essential nutrient not available in plant foods, prevents deficiency",
rationale: "Bitkisel gidalarda bulunmayan temel besin ogeleri, eksikligi onler",
});
supplements.push({
name: "Iron (plant-based form)",
dosage: "18mg daily with vitamin C",
rationale: "Plant-based diets may be lower in bioavailable iron",
rationale: "Bitkisel beslenme biyoyararlanilabirdemiracesindan dusuk olabilir",
});
supplements.push({
name: "Zinc",
dosage: "15mg daily",
rationale: "Lower bioavailability from plant sources, supports immunity",
rationale: "Bitkisel kaynaklardan dusuk biyoyararlanilabirlik, bagisikligi destekler",
});
}
@@ -432,12 +432,12 @@ function getSupplements(profile, dietType) {
supplements.push({
name: "Plant Sterols/Stanols",
dosage: "2g daily",
rationale: "Clinically shown to reduce LDL cholesterol absorption",
rationale: "LDL kolesterol emilimini azalttigi klinik olarak kanitlanmistir",
});
supplements.push({
name: "Psyllium Husk Fiber",
dosage: "5-10g daily",
rationale: "Soluble fiber binds cholesterol in the gut for excretion",
rationale: "Cozunur lif bagirsakta kolesterolu baglayarak atilimini saglar",
});
}
@@ -3099,19 +3099,28 @@ function scaleMeal(meal, targetCalories) {
// 7-DAY MEAL PLAN GENERATION
// ============================================================================
const DAY_NAMES = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
const DAY_NAMES = ["Pazartesi", "Sali", "Carsamba", "Persembe", "Cuma", "Cumartesi", "Pazar"];
const DIET_TYPE_LABELS = {
balanced: "Balanced Nutrition",
mediterranean: "Mediterranean",
high_protein: "High-Protein",
low_carb: "Low-Carb",
plant_based: "Plant-Based",
anti_inflammatory: "Anti-Inflammatory",
heart_healthy: "Heart-Healthy (DASH)",
diabetic_friendly: "Diabetic-Friendly",
calorie_deficit: "Calorie-Deficit",
recovery_gentle: "Recovery / Gentle",
balanced: "Dengeli Beslenme",
mediterranean: "Akdeniz",
high_protein: "Yuksek Protein",
low_carb: "Dusuk Karbonhidrat",
plant_based: "Bitkisel",
anti_inflammatory: "Anti-Enflamatuar",
heart_healthy: "Kalp Dostu (DASH)",
diabetic_friendly: "Diyabet Dostu",
calorie_deficit: "Kalori Acigi",
recovery_gentle: "Toparlanma / Hafif",
};
const MEAL_TYPE_LABELS = {
breakfast: "Kahvalti",
snack: "Ara Ogun",
lunch: "Ogle Yemegi",
pre_workout: "Antrenman Oncesi",
post_workout: "Antrenman Sonrasi",
dinner: "Aksam Yemegi",
};
function generateDietPlan(profile) {
@@ -3237,6 +3246,7 @@ function generateDietPlan(profile) {
dayMeals.push({
type: slot.type,
type_label: MEAL_TYPE_LABELS[slot.type] || slot.type,
name: scaled.name,
calories: scaled.calories,
protein: scaled.protein,
@@ -3270,41 +3280,54 @@ function generateDietPlan(profile) {
// Build notes
const notes = [];
if (isNonExerciser) {
notes.push("Plan adjusted for sedentary lifestyle - no pre/post workout meals included.");
notes.push("Focus on nutrient-dense, fiber-rich meals for satiety without excess calories.");
notes.push("Consider adding light daily walking (20-30 min) for overall health.");
notes.push("Plan hareketsiz yasam tarzina gore ayarlandi - antrenman oncesi/sonrasi ogunler dahil edilmedi.");
notes.push("Fazla kalori almadan tokluk icin besin degeri yuksek, lif zengini ogunlere odaklanin.");
notes.push("Genel saglik icin gunluk hafif yuruyus (20-30 dk) eklemeyi dusunun.");
}
if (goal === "lose_weight") {
notes.push("Calorie deficit of approximately 500 kcal applied for gradual, sustainable weight loss.");
notes.push("Aim for 0.5-1 kg of weight loss per week. Adjust if progress stalls after 2 weeks.");
notes.push("Kademeli ve surdurulebilir kilo kaybi icin yaklasik 500 kcal kalori acigi uygulandi.");
notes.push("Haftada 0.5-1 kg kilo kaybi hedefleyin. 2 hafta sonra ilerleme durursa ayarlayin.");
}
if (goal === "build_muscle") {
notes.push("Caloric surplus of 300 kcal to support lean muscle growth.");
notes.push("Distribute protein intake evenly across all meals for optimal muscle protein synthesis.");
notes.push("Yagsiz kas buyumesini desteklemek icin 300 kcal kalori fazlasi uygulandi.");
notes.push("Optimal kas protein sentezi icin protein alimini tum ogunlere esit dagitir.");
}
if (medicalAdjustments.length > 0) {
notes.push("Medical conditions have been factored into food selection and macro distribution.");
notes.push("Always consult your healthcare provider before making significant dietary changes.");
notes.push("Tibbi durumlar gida secimi ve makro dagitiminda dikkate alindi.");
notes.push("Onemli beslenme degisiklikleri yapmadan once her zaman saglik uzmaniniza danisin.");
}
notes.push(`Gunluk en az ${waterIntake}L su icin.`);
notes.push("Ogun porsiyonlari gunluk kalori hedeflerinizi karsilayacak sekilde olceklendirilmistir.");
notes.push("Hazirlama sureleri tahminidir - hafta sonlari toplu pisirme onemli olcude zaman kazandirir.");
// Flatten all days' meals into a single array for frontend compatibility
const allMeals = [];
for (const day of days) {
for (const meal of day.meals) {
allMeals.push({ ...meal, day: day.day, day_name: day.day_name });
}
}
notes.push(`Drink at least ${waterIntake}L of water daily.`);
notes.push("Meal portions are scaled to meet your daily calorie targets.");
notes.push("Prep times are estimates - batch cooking on weekends can save significant time.");
return {
title: `7-Day ${DIET_TYPE_LABELS[dietType] || "Balanced"} Nutrition Plan`,
title: `7 Gunluk ${DIET_TYPE_LABELS[dietType] || "Dengeli Beslenme"} Beslenme Plani`,
diet_type: dietType,
duration: "7 days",
duration: "7 gun",
bmr,
tdee,
daily_calories: dailyCalories,
daily_macros: dailyMacros,
macros: {
protein_g: dailyMacros.protein,
carbs_g: dailyMacros.carbs,
fat_g: dailyMacros.fat,
},
body_metrics: {
bmi,
weight,
height,
age,
gender,
body_fat_percentage: bodyFat || "not provided",
body_fat_percentage: bodyFat || "belirtilmedi",
bmr_methods_used: bodyFat > 0
? "Mifflin-St Jeor, Harris-Benedict, Katch-McArdle, Cunningham (averaged)"
: "Mifflin-St Jeor, Harris-Benedict (averaged)",
@@ -3312,9 +3335,11 @@ function generateDietPlan(profile) {
},
medical_adjustments: medicalAdjustments,
water_intake: waterIntake,
recommended_water_liters: waterIntake,
supplements,
notes,
days,
meals: allMeals,
};
}

View File

@@ -109,15 +109,15 @@ function generateShoppingList(mealPlan) {
}
const categories = {
protein: { name: "Protein Sources", icon: "🥩", items: [] },
dairy: { name: "Dairy", icon: "🧀", items: [] },
vegetables: { name: "Vegetables", icon: "🥬", items: [] },
fruits: { name: "Fruits", icon: "🍎", items: [] },
grains: { name: "Grains & Legumes", icon: "🌾", items: [] },
fats_nuts: { name: "Fats & Nuts", icon: "🥜", items: [] },
spices: { name: "Spices & Condiments", icon: "🧂", items: [] },
beverages: { name: "Beverages", icon: "🥤", items: [] },
other: { name: "Other", icon: "📦", items: [] },
protein: { name: "Protein Kaynaklari", icon: "🥩", items: [] },
dairy: { name: "Sut Urunleri", icon: "🧀", items: [] },
vegetables: { name: "Sebzeler", icon: "🥬", items: [] },
fruits: { name: "Meyveler", icon: "🍎", items: [] },
grains: { name: "Tahillar & Baklagiller", icon: "🌾", items: [] },
fats_nuts: { name: "Yaglar & Kuruyemisler", icon: "🥜", items: [] },
spices: { name: "Baharatlar & Soslar", icon: "🧂", items: [] },
beverages: { name: "Icecekler", icon: "🥤", items: [] },
other: { name: "Diger", icon: "📦", items: [] },
};
for (const data of Object.values(ingredientMap)) {
@@ -142,8 +142,8 @@ function generateShoppingList(mealPlan) {
}
return {
title: "Weekly Shopping List",
note: "This list is based on your 7-day meal plan.",
title: "Haftalik Alisveris Listesi",
note: "Bu liste 7 gunluk beslenme planiniza dayanmaktadir.",
categories: result,
total_items: Object.values(ingredientMap).length,
};

View File

@@ -183,10 +183,10 @@ const DAYS_TR = ["Pazartesi", "Sali", "Carsamba", "Persembe", "Cuma", "Cumartesi
// Mesocycle configuration (4-week progression)
// ─────────────────────────────────────────────────────────────────────────────
const MESOCYCLE = {
1: { phase: "Foundation", intensity_multiplier: 1.0, volume_multiplier: 1.0, description: "Foundation week - focus on form and technique" },
2: { phase: "Progression", intensity_multiplier: 1.05, volume_multiplier: 1.0, description: "+5% intensity increase" },
3: { phase: "Overreach", intensity_multiplier: 1.10, volume_multiplier: 1.0, description: "+10% intensity increase" },
4: { phase: "Deload", intensity_multiplier: 0.85, volume_multiplier: 0.6, description: "Deload week - volume reduced 40%, recovery focus" },
1: { phase: "Temel", intensity_multiplier: 1.0, volume_multiplier: 1.0, description: "Temel hafta - form ve teknik odakli" },
2: { phase: "Ilerleme", intensity_multiplier: 1.05, volume_multiplier: 1.0, description: "+%5 yogunluk artisi" },
3: { phase: "Yuklenme", intensity_multiplier: 1.10, volume_multiplier: 1.0, description: "+%10 yogunluk artisi" },
4: { phase: "Deload", intensity_multiplier: 0.85, volume_multiplier: 0.6, description: "Deload haftasi - hacim %40 azaltildi, toparlanma odakli" },
};
// ─────────────────────────────────────────────────────────────────────────────
@@ -298,101 +298,101 @@ const DESK_MOBILITY = [
// ─────────────────────────────────────────────────────────────────────────────
const LIGHT_ACTIVITY_PLANS = {
standard: [
{ day: 1, name: "Day 1 - Walking & Breathing", type: "light_activity", focus: "Cardiovascular & Stress Relief", estimated_duration: 30, estimated_calories: 80, activities: [
{ name: "Brisk Walking", name_tr: "Tempolu Yuruyus", duration: "20 minutes", gif: gifUrl("Brisk Walking"), instructions: ["Walk at comfortable but brisk pace", "Swing arms naturally", "Breathe rhythmically"], notes: "Target 3000-4000 steps" },
{ name: "Diaphragmatic Breathing", name_tr: "Diyafram Nefesi", duration: "5 minutes", gif: gifUrl("Diaphragmatic Breathing"), instructions: ["Sit or lie comfortably", "Breathe in through nose 4 seconds", "Hold 4 seconds", "Exhale through mouth 6 seconds"], notes: "Stress relief and relaxation" },
{ name: "Gentle Full Body Stretch", name_tr: "Hafif Tum Vucut Germe", duration: "5 minutes", gif: gifUrl("Gentle Full Body Stretch"), instructions: ["Stretch neck, shoulders, arms, back, legs", "Hold each stretch 15-20 seconds", "No bouncing"], notes: "Improve flexibility" },
{ day: 1, name: "Gun 1 - Yuruyus & Nefes", type: "light_activity", focus: "Kardiyovaskuler & Stres Giderme", estimated_duration: 30, estimated_calories: 80, activities: [
{ name: "Tempolu Yuruyus", name_tr: "Tempolu Yuruyus", duration: "20 dakika", gif: gifUrl("Brisk Walking"), instructions: ["Rahat ama tempolu yuruyun", "Kollarinizi dogal sallayin", "Ritmik nefes alin"], notes: "Hedef 3000-4000 adim" },
{ name: "Diyafram Nefesi", name_tr: "Diyafram Nefesi", duration: "5 dakika", gif: gifUrl("Diaphragmatic Breathing"), instructions: ["Rahatca oturun veya uzanin", "Burundan 4 saniye nefes alin", "4 saniye tutun", "Agizdan 6 saniye verin"], notes: "Stres giderme ve rahatlama" },
{ name: "Hafif Tum Vucut Germe", name_tr: "Hafif Tum Vucut Germe", duration: "5 dakika", gif: gifUrl("Gentle Full Body Stretch"), instructions: ["Boyun, omuz, kol, sirt, bacak gerin", "Her germeyi 15-20 saniye tutun", "Ziplama yapmayin"], notes: "Esnekligi gelistirin" },
] },
{ day: 2, name: "Day 2 - Mobility & Stretching", type: "light_activity", focus: "Flexibility & Joint Health", estimated_duration: 25, estimated_calories: 50, activities: [
{ name: "Joint Circles", name_tr: "Eklem Civirleri", duration: "5 minutes", gif: gifUrl("Joint Circles"), instructions: ["Circle ankles, knees, hips, shoulders, wrists", "10 circles each direction", "Gentle and controlled"], notes: "Warm up all joints" },
{ name: "Yoga-Inspired Stretching", name_tr: "Yoga Tarzinda Germe", duration: "15 minutes", gif: gifUrl("Yoga Stretching"), instructions: ["Cat-cow stretch", "Child's pose", "Downward dog or modified version", "Seated forward fold", "Gentle twist"], notes: "Focus on breathing and relaxation" },
{ name: "Box Breathing", name_tr: "Kutu Nefesi", duration: "5 minutes", gif: gifUrl("Box Breathing"), instructions: ["Breathe in 4 seconds", "Hold 4 seconds", "Breathe out 4 seconds", "Hold 4 seconds"], notes: "Calming technique" },
{ day: 2, name: "Gun 2 - Mobilite & Germe", type: "light_activity", focus: "Esneklik & Eklem Sagligi", estimated_duration: 25, estimated_calories: 50, activities: [
{ name: "Eklem Civirleri", name_tr: "Eklem Civirleri", duration: "5 dakika", gif: gifUrl("Joint Circles"), instructions: ["Ayak bilegi, diz, kalca, omuz, bilek civirleri yapin", "Her yone 10 civir", "Yumusak ve kontrollü"], notes: "Tum eklemleri isitma" },
{ name: "Yoga Tarzinda Germe", name_tr: "Yoga Tarzinda Germe", duration: "15 dakika", gif: gifUrl("Yoga Stretching"), instructions: ["Kedi-inek germesi", "Cocuk pozu", "Asagi bakan kopek veya modifiye versiyon", "Oturarak one egilme", "Hafif bükülme"], notes: "Nefes ve rahatlamaya odaklanin" },
{ name: "Kutu Nefesi", name_tr: "Kutu Nefesi", duration: "5 dakika", gif: gifUrl("Box Breathing"), instructions: ["4 saniye nefes alin", "4 saniye tutun", "4 saniye nefes verin", "4 saniye tutun"], notes: "Sakinlestirici teknik" },
] },
{ day: 3, name: "Day 3 - Light Walk & Core", type: "light_activity", focus: "Walking & Core Stability", estimated_duration: 30, estimated_calories: 70, activities: [
{ name: "Outdoor or Indoor Walking", name_tr: "Yuruyus", duration: "15 minutes", gif: gifUrl("Walking"), instructions: ["Moderate pace", "Focus on posture", "Keep shoulders back"], notes: "Target 2000-3000 steps" },
{ name: "Gentle Core Work", name_tr: "Hafif Core Calismasi", duration: "10 minutes", gif: gifUrl("Gentle Core Work"), instructions: ["Dead bugs 10 each side", "Bird dog 10 each side", "Gentle pelvic tilts 15 reps", "Modified plank 15-20 seconds"], notes: "Low intensity core activation" },
{ name: "Progressive Muscle Relaxation", name_tr: "Kademeli Kas Gevsetme", duration: "5 minutes", gif: gifUrl("Progressive Muscle Relaxation"), instructions: ["Tense each muscle group 5 seconds", "Release and relax 10 seconds", "Work from toes to head"], notes: "Stress and tension relief" },
{ day: 3, name: "Gun 3 - Hafif Yuruyus & Core", type: "light_activity", focus: "Yuruyus & Core Stabilitesi", estimated_duration: 30, estimated_calories: 70, activities: [
{ name: "Dis veya Ic Mekan Yuruyusu", name_tr: "Yuruyus", duration: "15 dakika", gif: gifUrl("Walking"), instructions: ["Orta tempo", "Durusa odaklanin", "Omuzlari geride tutun"], notes: "Hedef 2000-3000 adim" },
{ name: "Hafif Core Calismasi", name_tr: "Hafif Core Calismasi", duration: "10 dakika", gif: gifUrl("Gentle Core Work"), instructions: ["Dead bug her taraf 10 tekrar", "Bird dog her taraf 10 tekrar", "Hafif pelvik tilt 15 tekrar", "Modifiye plank 15-20 saniye"], notes: "Dusuk yogunluklu core aktivasyonu" },
{ name: "Kademeli Kas Gevsetme", name_tr: "Kademeli Kas Gevsetme", duration: "5 dakika", gif: gifUrl("Progressive Muscle Relaxation"), instructions: ["Her kas grubunu 5 saniye kasin", "Birakin ve 10 saniye gevsetin", "Ayak parmaklarindan basa dogru calisin"], notes: "Stres ve gerilim giderme" },
] },
{ day: 4, name: "Day 4 - Rest & Breathing", type: "light_activity", focus: "Recovery & Mental Wellness", estimated_duration: 20, estimated_calories: 30, activities: [
{ name: "Gentle Walking", name_tr: "Hafif Yuruyus", duration: "10 minutes", gif: gifUrl("Gentle Walking"), instructions: ["Very easy pace", "Focus on environment", "Practice mindful walking"], notes: "Light movement only" },
{ name: "4-7-8 Breathing", name_tr: "4-7-8 Nefes", duration: "5 minutes", gif: gifUrl("4-7-8 Breathing"), instructions: ["Inhale through nose 4 seconds", "Hold breath 7 seconds", "Exhale through mouth 8 seconds", "Repeat 4-8 cycles"], notes: "Promotes relaxation and sleep quality" },
{ name: "Gentle Neck & Shoulder Release", name_tr: "Boyun ve Omuz Gevsetme", duration: "5 minutes", gif: gifUrl("Neck Shoulder Release"), instructions: ["Neck tilts each direction", "Shoulder rolls forward and back", "Shoulder shrugs and release"], notes: "Release common tension areas" },
{ day: 4, name: "Gun 4 - Dinlenme & Nefes", type: "light_activity", focus: "Toparlanma & Zihinsel Saglik", estimated_duration: 20, estimated_calories: 30, activities: [
{ name: "Hafif Yuruyus", name_tr: "Hafif Yuruyus", duration: "10 dakika", gif: gifUrl("Gentle Walking"), instructions: ["Cok yavas tempo", "Cevrenizdeki seylere odaklanin", "Bilinçli yuruyus yapin"], notes: "Sadece hafif hareket" },
{ name: "4-7-8 Nefes", name_tr: "4-7-8 Nefes", duration: "5 dakika", gif: gifUrl("4-7-8 Breathing"), instructions: ["Burundan 4 saniye nefes alin", "7 saniye nefesinizi tutun", "Agizdan 8 saniye nefes verin", "4-8 döngü tekrarlayin"], notes: "Rahatlama ve uyku kalitesini arttirir" },
{ name: "Boyun ve Omuz Gevsetme", name_tr: "Boyun ve Omuz Gevsetme", duration: "5 dakika", gif: gifUrl("Neck Shoulder Release"), instructions: ["Her yone boyun egilmeleri", "Ileri geri omuz civirma", "Omuz kaldirma ve birakmalar"], notes: "Yaygin gerilim bolgelerini gevsetin" },
] },
{ day: 5, name: "Day 5 - Walking & Flexibility", type: "light_activity", focus: "Cardiovascular & Stretching", estimated_duration: 30, estimated_calories: 75, activities: [
{ name: "Brisk Walking", name_tr: "Tempolu Yuruyus", duration: "20 minutes", gif: gifUrl("Brisk Walking"), instructions: ["Moderate to brisk pace", "Include some hills or inclines if possible", "Maintain good posture"], notes: "Target 3000-4000 steps" },
{ name: "Standing Stretches", name_tr: "Ayakta Germe", duration: "10 minutes", gif: gifUrl("Standing Stretches"), instructions: ["Calf stretch against wall", "Quad stretch holding chair", "Hamstring stretch on step", "Side bend stretch", "Chest opener stretch"], notes: "Focus on areas that feel tight" },
{ day: 5, name: "Gun 5 - Yuruyus & Esneklik", type: "light_activity", focus: "Kardiyovaskuler & Germe", estimated_duration: 30, estimated_calories: 75, activities: [
{ name: "Tempolu Yuruyus", name_tr: "Tempolu Yuruyus", duration: "20 dakika", gif: gifUrl("Brisk Walking"), instructions: ["Orta-hizli tempo", "Mumkunse yokuslar dahil edin", "Iyi durusu koruyun"], notes: "Hedef 3000-4000 adim" },
{ name: "Ayakta Germe", name_tr: "Ayakta Germe", duration: "10 dakika", gif: gifUrl("Standing Stretches"), instructions: ["Duvara yaslanarak baldır germesi", "Sandalye tutarak quadriceps germesi", "Basamakta hamstring germesi", "Yana egilme germesi", "Gogus acma germesi"], notes: "Sıkı hissedilen bolgelere odaklanin" },
] },
{ day: 6, name: "Day 6 - Mobility & Balance", type: "light_activity", focus: "Balance & Joint Mobility", estimated_duration: 25, estimated_calories: 50, activities: [
{ name: "Balance Exercises", name_tr: "Denge Egzersizleri", duration: "10 minutes", gif: gifUrl("Balance Exercises"), instructions: ["Single leg stand 30 seconds each", "Heel-to-toe walk", "Standing weight shifts", "Tandem stance"], notes: "Improve stability and proprioception" },
{ name: "Seated Mobility Flow", name_tr: "Oturarak Mobilite", duration: "10 minutes", gif: gifUrl("Seated Mobility Flow"), instructions: ["Seated spinal twist", "Seated hip circles", "Ankle circles", "Wrist circles", "Shoulder rolls"], notes: "Full body joint mobility from chair" },
{ name: "Deep Breathing Cool-Down", name_tr: "Derin Nefes Soguma", duration: "5 minutes", gif: gifUrl("Deep Breathing"), instructions: ["Belly breathing", "Long slow exhales", "Close eyes if comfortable"], notes: "End with relaxation" },
{ day: 6, name: "Gun 6 - Mobilite & Denge", type: "light_activity", focus: "Denge & Eklem Mobilitesi", estimated_duration: 25, estimated_calories: 50, activities: [
{ name: "Denge Egzersizleri", name_tr: "Denge Egzersizleri", duration: "10 dakika", gif: gifUrl("Balance Exercises"), instructions: ["Tek bacak durma her taraf 30 saniye", "Topuk-parmak yuruyusu", "Ayakta agirlik aktarma", "Tandem durus"], notes: "Stabilite ve propriyosepsiyonu gelistirin" },
{ name: "Oturarak Mobilite Akisi", name_tr: "Oturarak Mobilite", duration: "10 dakika", gif: gifUrl("Seated Mobility Flow"), instructions: ["Oturarak omurga bükülmesi", "Oturarak kalca civirleri", "Ayak bilegi civirleri", "Bilek civirleri", "Omuz civirma"], notes: "Sandalyeden tum vucut eklem mobilitesi" },
{ name: "Derin Nefes Soguma", name_tr: "Derin Nefes Soguma", duration: "5 dakika", gif: gifUrl("Deep Breathing"), instructions: ["Karin nefesi", "Uzun yavas nefes verme", "Rahatsa gozlerinizi kapatın"], notes: "Rahatlamayla bitirin" },
] },
{ day: 7, name: "Day 7 - Rest & Recovery", type: "light_activity", focus: "Complete Rest & Self-Care", estimated_duration: 15, estimated_calories: 20, activities: [
{ name: "Gentle Walk", name_tr: "Hafif Yuruyus", duration: "10 minutes", gif: gifUrl("Gentle Walk"), instructions: ["Very easy pace", "Enjoy the environment", "No intensity targets"], notes: "Optional - only if you feel up to it" },
{ name: "Body Scan Meditation", name_tr: "Vucut Tarama Meditasyonu", duration: "5 minutes", gif: gifUrl("Body Scan Meditation"), instructions: ["Lie down or sit comfortably", "Mentally scan from toes to head", "Notice sensations without judgment", "Breathe into any tense areas"], notes: "Mindfulness and recovery" },
{ day: 7, name: "Gun 7 - Dinlenme & Toparlanma", type: "light_activity", focus: "Tam Dinlenme & Oz Bakim", estimated_duration: 15, estimated_calories: 20, activities: [
{ name: "Hafif Yuruyus", name_tr: "Hafif Yuruyus", duration: "10 dakika", gif: gifUrl("Gentle Walk"), instructions: ["Cok kolay tempo", "Cevrenin tadini cikarin", "Yogunluk hedefi yok"], notes: "Istege bagli - sadece kendinizi hazir hissediyorsaniz" },
{ name: "Vucut Tarama Meditasyonu", name_tr: "Vucut Tarama Meditasyonu", duration: "5 dakika", gif: gifUrl("Body Scan Meditation"), instructions: ["Uzanin veya rahatca oturun", "Ayak parmaklarindan basa zihinsel tarama yapin", "Yargilamadan hislere dikkat edin", "Gergin bolgelere nefes gonderin"], notes: "Farkindalik ve toparlanma" },
] },
],
wheelchair: [
{ day: 1, name: "Day 1 - Upper Body Seated", type: "light_activity", focus: "Seated Upper Body Movement", estimated_duration: 25, estimated_calories: 50, activities: [
{ name: "Seated Arm Circles", name_tr: "Oturarak Kol Civirme", duration: "5 minutes", gif: gifUrl("Seated Arm Circles"), instructions: ["Small circles forward 20 reps", "Small circles backward 20 reps", "Large circles forward 10 reps", "Large circles backward 10 reps"], notes: "Warm up shoulders" },
{ name: "Seated Chest Press Motion", name_tr: "Oturarak Gogus Press", duration: "10 minutes", gif: gifUrl("Seated Chest Press Motion"), instructions: ["Push hands forward from chest", "Light resistance band if available", "15-20 reps, 2-3 sets", "Rest 30 seconds between sets"], notes: "Upper body strengthening" },
{ name: "Seated Deep Breathing", name_tr: "Oturarak Derin Nefes", duration: "5 minutes", gif: gifUrl("Seated Deep Breathing"), instructions: ["Sit tall", "Breathe deeply into belly", "Exhale slowly", "Focus on posture"], notes: "Respiratory health" },
{ name: "Upper Body Stretch", name_tr: "Ust Vucut Germe", duration: "5 minutes", gif: gifUrl("Upper Body Stretch"), instructions: ["Overhead reach", "Cross-body shoulder stretch", "Triceps stretch", "Chest opener"], notes: "Flexibility maintenance" },
{ day: 1, name: "Gun 1 - Oturarak Ust Vucut", type: "light_activity", focus: "Oturarak Ust Vucut Hareketi", estimated_duration: 25, estimated_calories: 50, activities: [
{ name: "Oturarak Kol Civirme", name_tr: "Oturarak Kol Civirme", duration: "5 dakika", gif: gifUrl("Seated Arm Circles"), instructions: ["Ileri kucuk daireler 20 tekrar", "Geri kucuk daireler 20 tekrar", "Ileri buyuk daireler 10 tekrar", "Geri buyuk daireler 10 tekrar"], notes: "Omuzlari isitma" },
{ name: "Oturarak Gogus Press Hareketi", name_tr: "Oturarak Gogus Press", duration: "10 dakika", gif: gifUrl("Seated Chest Press Motion"), instructions: ["Elleri gogüsten ileri itin", "Varsa hafif direnç bandi kullanin", "15-20 tekrar, 2-3 set", "Setler arasi 30 saniye dinlenme"], notes: "Ust vucut guclenme" },
{ name: "Oturarak Derin Nefes", name_tr: "Oturarak Derin Nefes", duration: "5 dakika", gif: gifUrl("Seated Deep Breathing"), instructions: ["Dik oturun", "Karna dogru derin nefes alin", "Yavasca nefes verin", "Durusa odaklanin"], notes: "Solunum sagligi" },
{ name: "Ust Vucut Germe", name_tr: "Ust Vucut Germe", duration: "5 dakika", gif: gifUrl("Upper Body Stretch"), instructions: ["Basa dogru uzanma", "Capraz omuz germesi", "Triceps germesi", "Gogus acma"], notes: "Esneklik bakimi" },
] },
{ day: 2, name: "Day 2 - Breathing & Mobility", type: "light_activity", focus: "Respiratory & Joint Health", estimated_duration: 20, estimated_calories: 30, activities: [
{ name: "Breathing Exercises", name_tr: "Nefes Egzersizleri", duration: "10 minutes", gif: gifUrl("Breathing Exercises"), instructions: ["Pursed lip breathing 2 min", "Diaphragmatic breathing 3 min", "Box breathing 5 min"], notes: "Lung capacity and relaxation" },
{ name: "Seated Joint Mobility", name_tr: "Oturarak Eklem Mobilitesi", duration: "10 minutes", gif: gifUrl("Seated Joint Mobility"), instructions: ["Wrist circles", "Elbow flexion/extension", "Shoulder rolls", "Neck rotations", "Trunk rotations"], notes: "Maintain joint range of motion" },
{ day: 2, name: "Gun 2 - Nefes & Mobilite", type: "light_activity", focus: "Solunum & Eklem Sagligi", estimated_duration: 20, estimated_calories: 30, activities: [
{ name: "Nefes Egzersizleri", name_tr: "Nefes Egzersizleri", duration: "10 dakika", gif: gifUrl("Breathing Exercises"), instructions: ["Büzük dudak nefesi 2 dk", "Diyafram nefesi 3 dk", "Kutu nefesi 5 dk"], notes: "Akciger kapasitesi ve rahatlama" },
{ name: "Oturarak Eklem Mobilitesi", name_tr: "Oturarak Eklem Mobilitesi", duration: "10 dakika", gif: gifUrl("Seated Joint Mobility"), instructions: ["Bilek civirleri", "Dirsek bükme/acma", "Omuz civirma", "Boyun rotasyonlari", "Govde rotasyonlari"], notes: "Eklem hareket acikligini koruyun" },
] },
{ day: 3, name: "Day 3 - Light Resistance", type: "light_activity", focus: "Seated Resistance Training", estimated_duration: 25, estimated_calories: 45, activities: [
{ name: "Seated Band Rows", name_tr: "Oturarak Bantli Row", duration: "8 minutes", gif: gifUrl("Seated Band Rows"), instructions: ["Anchor band at chest height", "Pull toward torso", "Squeeze shoulder blades", "12-15 reps, 2 sets"], notes: "Back strengthening" },
{ name: "Seated Band Press", name_tr: "Oturarak Bantli Press", duration: "8 minutes", gif: gifUrl("Seated Band Press"), instructions: ["Band behind back", "Press forward", "12-15 reps, 2 sets"], notes: "Chest and arm strengthening" },
{ name: "Seated Core Activation", name_tr: "Oturarak Core Aktivasyonu", duration: "5 minutes", gif: gifUrl("Seated Core Activation"), instructions: ["Seated pelvic tilts", "Seated trunk rotation", "Seated side bends"], notes: "Core stability" },
{ name: "Cool-Down Stretching", name_tr: "Soguma Germe", duration: "4 minutes", gif: gifUrl("Seated Stretching"), instructions: ["Stretch all worked muscle groups", "Hold 20-30 seconds each"], notes: "Recovery" },
{ day: 3, name: "Gun 3 - Hafif Direnc", type: "light_activity", focus: "Oturarak Direnc Antrenmani", estimated_duration: 25, estimated_calories: 45, activities: [
{ name: "Oturarak Bantli Row", name_tr: "Oturarak Bantli Row", duration: "8 dakika", gif: gifUrl("Seated Band Rows"), instructions: ["Bandi gogus hizasinda sabitleyin", "Govdeye dogru cekin", "Kurek kemiklerini sikin", "12-15 tekrar, 2 set"], notes: "Sirt guclendirme" },
{ name: "Oturarak Bantli Press", name_tr: "Oturarak Bantli Press", duration: "8 dakika", gif: gifUrl("Seated Band Press"), instructions: ["Band sirtin arkasinda", "Ileri itin", "12-15 tekrar, 2 set"], notes: "Gogus ve kol guclendirme" },
{ name: "Oturarak Core Aktivasyonu", name_tr: "Oturarak Core Aktivasyonu", duration: "5 dakika", gif: gifUrl("Seated Core Activation"), instructions: ["Oturarak pelvik tilt", "Oturarak govde rotasyonu", "Oturarak yana egilme"], notes: "Core stabilitesi" },
{ name: "Soguma Germe", name_tr: "Soguma Germe", duration: "4 dakika", gif: gifUrl("Seated Stretching"), instructions: ["Calisan tum kas gruplarini gerin", "Her birini 20-30 saniye tutun"], notes: "Toparlanma" },
] },
{ day: 4, name: "Day 4 - Rest & Recovery", type: "light_activity", focus: "Mental Wellness", estimated_duration: 15, estimated_calories: 15, activities: [
{ name: "Guided Breathing", name_tr: "Rehberli Nefes", duration: "10 minutes", gif: gifUrl("Guided Breathing"), instructions: ["Follow 4-7-8 pattern", "Focus on complete relaxation"], notes: "Stress management" },
{ name: "Gentle Stretching", name_tr: "Hafif Germe", duration: "5 minutes", gif: gifUrl("Gentle Stretching"), instructions: ["Only stretch what feels comfortable", "No pushing into pain"], notes: "Light recovery" },
{ day: 4, name: "Gun 4 - Dinlenme & Toparlanma", type: "light_activity", focus: "Zihinsel Saglik", estimated_duration: 15, estimated_calories: 15, activities: [
{ name: "Rehberli Nefes", name_tr: "Rehberli Nefes", duration: "10 dakika", gif: gifUrl("Guided Breathing"), instructions: ["4-7-8 kalibini takip edin", "Tam rahatlamaya odaklanin"], notes: "Stres yonetimi" },
{ name: "Hafif Germe", name_tr: "Hafif Germe", duration: "5 dakika", gif: gifUrl("Gentle Stretching"), instructions: ["Sadece rahat hissettiren bolgeleri gerin", "Agriya zorlamayin"], notes: "Hafif toparlanma" },
] },
{ day: 5, name: "Day 5 - Seated Cardio", type: "light_activity", focus: "Cardiovascular Health", estimated_duration: 25, estimated_calories: 55, activities: [
{ name: "Seated Arm Ergometer / Air Punches", name_tr: "Oturarak Kol Kardiyosu", duration: "15 minutes", gif: gifUrl("Seated Arm Cardio"), instructions: ["Alternating arm punches", "Arm cranking motion", "Overhead reaches", "Keep moderate pace"], notes: "Elevate heart rate safely" },
{ name: "Seated Torso Twists", name_tr: "Oturarak Govde Dondurmesi", duration: "5 minutes", gif: gifUrl("Seated Torso Twists"), instructions: ["Rotate torso left and right", "Arms at chest level", "Controlled movement"], notes: "Core engagement" },
{ name: "Cool-Down", name_tr: "Soguma", duration: "5 minutes", gif: gifUrl("Seated Cool Down"), instructions: ["Slow arm movements", "Deep breathing", "Gentle stretching"], notes: "Gradual recovery" },
{ day: 5, name: "Gun 5 - Oturarak Kardiyo", type: "light_activity", focus: "Kardiyovaskuler Saglik", estimated_duration: 25, estimated_calories: 55, activities: [
{ name: "Oturarak Kol Kardiyosu", name_tr: "Oturarak Kol Kardiyosu", duration: "15 dakika", gif: gifUrl("Seated Arm Cardio"), instructions: ["Sirayla kol yumruklari", "Kol cevirme hareketi", "Basa dogru uzanmalar", "Orta tempoyu koruyun"], notes: "Kalp atisini guvenle yukseltin" },
{ name: "Oturarak Govde Dondurmesi", name_tr: "Oturarak Govde Dondurmesi", duration: "5 dakika", gif: gifUrl("Seated Torso Twists"), instructions: ["Govdeyi saga sola cevirme", "Kollar gogus seviyesinde", "Kontrollü hareket"], notes: "Core aktivasyonu" },
{ name: "Soguma", name_tr: "Soguma", duration: "5 dakika", gif: gifUrl("Seated Cool Down"), instructions: ["Yavas kol hareketleri", "Derin nefes", "Hafif germe"], notes: "Kademeli toparlanma" },
] },
{ day: 6, name: "Day 6 - Flexibility Focus", type: "light_activity", focus: "Stretching & Relaxation", estimated_duration: 20, estimated_calories: 25, activities: [
{ name: "Comprehensive Seated Stretch", name_tr: "Kapsamli Oturarak Germe", duration: "15 minutes", gif: gifUrl("Comprehensive Seated Stretch"), instructions: ["Neck stretches all directions", "Shoulder stretches", "Chest opener", "Trunk side bends", "Wrist stretches", "Hip flexor stretch if possible"], notes: "Full body flexibility" },
{ name: "Meditation", name_tr: "Meditasyon", duration: "5 minutes", gif: gifUrl("Seated Meditation"), instructions: ["Close eyes", "Focus on breathing", "Let thoughts pass without engagement"], notes: "Mental wellness" },
{ day: 6, name: "Gun 6 - Esneklik Odakli", type: "light_activity", focus: "Germe & Rahatlama", estimated_duration: 20, estimated_calories: 25, activities: [
{ name: "Kapsamli Oturarak Germe", name_tr: "Kapsamli Oturarak Germe", duration: "15 dakika", gif: gifUrl("Comprehensive Seated Stretch"), instructions: ["Her yone boyun germeleri", "Omuz germeleri", "Gogus acma", "Govde yana egilmeleri", "Bilek germeleri", "Mumkunse kalca fleksor germesi"], notes: "Tum vucut esnekligi" },
{ name: "Meditasyon", name_tr: "Meditasyon", duration: "5 dakika", gif: gifUrl("Seated Meditation"), instructions: ["Gozleri kapatin", "Nefese odaklanin", "Dusuncelerin gecmesine izin verin"], notes: "Zihinsel saglik" },
] },
{ day: 7, name: "Day 7 - Complete Rest", type: "light_activity", focus: "Full Recovery", estimated_duration: 10, estimated_calories: 10, activities: [
{ name: "Optional Light Movement", name_tr: "Istege Bagli Hafif Hareket", duration: "5 minutes", gif: gifUrl("Optional Light Movement"), instructions: ["Only if you feel like it", "Gentle arm swings", "Shoulder rolls"], notes: "Completely optional" },
{ name: "Relaxation Breathing", name_tr: "Rahatlama Nefesi", duration: "5 minutes", gif: gifUrl("Relaxation Breathing"), instructions: ["Long slow breaths", "Focus on letting go of tension"], notes: "End the week relaxed" },
{ day: 7, name: "Gun 7 - Tam Dinlenme", type: "light_activity", focus: "Tam Toparlanma", estimated_duration: 10, estimated_calories: 10, activities: [
{ name: "Istege Bagli Hafif Hareket", name_tr: "Istege Bagli Hafif Hareket", duration: "5 dakika", gif: gifUrl("Optional Light Movement"), instructions: ["Sadece isterseniz", "Hafif kol sallama", "Omuz civirma"], notes: "Tamamen istege bagli" },
{ name: "Rahatlama Nefesi", name_tr: "Rahatlama Nefesi", duration: "5 dakika", gif: gifUrl("Relaxation Breathing"), instructions: ["Uzun yavas nefesler", "Gerilimi birakmeye odaklanin"], notes: "Haftayi rahat bitirin" },
] },
],
limited_both: [
{ day: 1, name: "Day 1 - Gentle Mobility", type: "light_activity", focus: "Gentle Movement", estimated_duration: 15, estimated_calories: 20, activities: [
{ name: "Seated Breathing Exercise", name_tr: "Oturarak Nefes", duration: "5 minutes", gif: gifUrl("Seated Breathing"), instructions: ["Deep belly breaths", "Slow and rhythmic"], notes: "Foundation exercise" },
{ name: "Gentle Range of Motion", name_tr: "Hafif Hareket Acikligi", duration: "10 minutes", gif: gifUrl("Gentle ROM"), instructions: ["Move whatever joints feel comfortable", "Very gentle circles and movements", "Stop if any discomfort"], notes: "Maintain what mobility you have" },
{ day: 1, name: "Gun 1 - Hafif Mobilite", type: "light_activity", focus: "Hafif Hareket", estimated_duration: 15, estimated_calories: 20, activities: [
{ name: "Oturarak Nefes Egzersizi", name_tr: "Oturarak Nefes", duration: "5 dakika", gif: gifUrl("Seated Breathing"), instructions: ["Derin karin nefesleri", "Yavas ve ritmik"], notes: "Temel egzersiz" },
{ name: "Hafif Hareket Acikligi", name_tr: "Hafif Hareket Acikligi", duration: "10 dakika", gif: gifUrl("Gentle ROM"), instructions: ["Rahat hissedilen eklemleri hareket ettirin", "Cok hafif daireler ve hareketler", "Rahatsizlik olursa durdurun"], notes: "Mevcut mobiliteyi koruyun" },
] },
{ day: 2, name: "Day 2 - Breathing Focus", type: "light_activity", focus: "Respiratory Health", estimated_duration: 15, estimated_calories: 15, activities: [
{ name: "Progressive Breathing", name_tr: "Kademeli Nefes", duration: "10 minutes", gif: gifUrl("Progressive Breathing"), instructions: ["Start with normal breaths", "Gradually deepen inhales", "Gradually lengthen exhales", "4-7-8 pattern if comfortable"], notes: "Improve lung capacity" },
{ name: "Body Awareness Scan", name_tr: "Vucut Farkindalik", duration: "5 minutes", gif: gifUrl("Body Awareness"), instructions: ["Notice each body part", "Release tension where found", "Accept current state"], notes: "Mind-body connection" },
{ day: 2, name: "Gun 2 - Nefes Odakli", type: "light_activity", focus: "Solunum Sagligi", estimated_duration: 15, estimated_calories: 15, activities: [
{ name: "Kademeli Nefes", name_tr: "Kademeli Nefes", duration: "10 dakika", gif: gifUrl("Progressive Breathing"), instructions: ["Normal nefeslerle baslayin", "Yavasce nefes almayi derinlestirin", "Yavasce nefes vermeyi uzatin", "Rahatsa 4-7-8 kalibi"], notes: "Akciger kapasitesini gelistirin" },
{ name: "Vucut Farkindalik Taramasi", name_tr: "Vucut Farkindalik", duration: "5 dakika", gif: gifUrl("Body Awareness"), instructions: ["Her vucut bolumune dikkat edin", "Bulunan gerilimi birakin", "Mevcut durumu kabul edin"], notes: "Zihin-vucut baglantisi" },
] },
{ day: 3, name: "Day 3 - Light Stretch", type: "light_activity", focus: "Gentle Flexibility", estimated_duration: 15, estimated_calories: 15, activities: [
{ name: "Supported Stretching", name_tr: "Destekli Germe", duration: "10 minutes", gif: gifUrl("Supported Stretching"), instructions: ["Use pillows or supports as needed", "Very gentle holds 10-15 seconds", "Focus on comfortable range only"], notes: "Gentle flexibility work" },
{ name: "Relaxation", name_tr: "Rahatlama", duration: "5 minutes", gif: gifUrl("Relaxation"), instructions: ["Close eyes", "Deep breathing", "Progressive muscle relaxation where possible"], notes: "Recovery" },
{ day: 3, name: "Gun 3 - Hafif Germe", type: "light_activity", focus: "Hafif Esneklik", estimated_duration: 15, estimated_calories: 15, activities: [
{ name: "Destekli Germe", name_tr: "Destekli Germe", duration: "10 dakika", gif: gifUrl("Supported Stretching"), instructions: ["Gerektiginde yastik veya destek kullanin", "Cok hafif tutmalar 10-15 saniye", "Sadece rahat araliga odaklanin"], notes: "Hafif esneklik calismasi" },
{ name: "Rahatlama", name_tr: "Rahatlama", duration: "5 dakika", gif: gifUrl("Relaxation"), instructions: ["Gozleri kapatin", "Derin nefes", "Mumkun olan yerlerde kademeli kas gevsetme"], notes: "Toparlanma" },
] },
{ day: 4, name: "Day 4 - Rest", type: "light_activity", focus: "Complete Rest", estimated_duration: 10, estimated_calories: 10, activities: [
{ name: "Breathing Only", name_tr: "Sadece Nefes", duration: "10 minutes", gif: gifUrl("Breathing Only"), instructions: ["Comfortable position", "Gentle natural breathing", "Mindfulness focus"], notes: "Active rest through breathing" },
{ day: 4, name: "Gun 4 - Dinlenme", type: "light_activity", focus: "Tam Dinlenme", estimated_duration: 10, estimated_calories: 10, activities: [
{ name: "Sadece Nefes", name_tr: "Sadece Nefes", duration: "10 dakika", gif: gifUrl("Breathing Only"), instructions: ["Rahat pozisyon", "Hafif dogal nefes", "Farkindalik odagi"], notes: "Nefes ile aktif dinlenme" },
] },
{ day: 5, name: "Day 5 - Gentle Mobility", type: "light_activity", focus: "Joint Care", estimated_duration: 15, estimated_calories: 20, activities: [
{ name: "Assisted Range of Motion", name_tr: "Yardimli Hareket Acikligi", duration: "10 minutes", gif: gifUrl("Assisted ROM"), instructions: ["Use one limb to help the other if needed", "Gentle passive stretching", "Stay within comfort zone"], notes: "Maintain joint health" },
{ name: "Visualization Exercise", name_tr: "Gorsellestirme", duration: "5 minutes", gif: gifUrl("Visualization"), instructions: ["Imagine performing movements", "Mental rehearsal activates neural pathways", "Relaxing and beneficial"], notes: "Mind-body exercise" },
{ day: 5, name: "Gun 5 - Hafif Mobilite", type: "light_activity", focus: "Eklem Bakimi", estimated_duration: 15, estimated_calories: 20, activities: [
{ name: "Yardimli Hareket Acikligi", name_tr: "Yardimli Hareket Acikligi", duration: "10 dakika", gif: gifUrl("Assisted ROM"), instructions: ["Gerekirse bir uzvu digerine yardimci kullanin", "Hafif pasif germe", "Konfor bolgesi icinde kalin"], notes: "Eklem sagligini koruyun" },
{ name: "Gorsellestirme Egzersizi", name_tr: "Gorsellestirme", duration: "5 dakika", gif: gifUrl("Visualization"), instructions: ["Hareketleri yaptiginizi hayal edin", "Zihinsel prova sinir yollarini aktive eder", "Rahatlatici ve faydalı"], notes: "Zihin-vucut egzersizi" },
] },
{ day: 6, name: "Day 6 - Breathing & Relaxation", type: "light_activity", focus: "Stress Relief", estimated_duration: 15, estimated_calories: 10, activities: [
{ name: "Extended Breathing Session", name_tr: "Uzun Nefes Seansi", duration: "10 minutes", gif: gifUrl("Extended Breathing"), instructions: ["Alternate nostril breathing", "Box breathing", "4-7-8 breathing"], notes: "Multiple techniques" },
{ name: "Gentle Self-Massage", name_tr: "Hafif Masaj", duration: "5 minutes", gif: gifUrl("Self Massage"), instructions: ["Gently massage accessible areas", "Focus on hands, arms, neck", "Use gentle circular motions"], notes: "Relaxation and circulation" },
{ day: 6, name: "Gun 6 - Nefes & Rahatlama", type: "light_activity", focus: "Stres Giderme", estimated_duration: 15, estimated_calories: 10, activities: [
{ name: "Uzun Nefes Seansi", name_tr: "Uzun Nefes Seansi", duration: "10 dakika", gif: gifUrl("Extended Breathing"), instructions: ["Alternatif burun nefesi", "Kutu nefesi", "4-7-8 nefesi"], notes: "Birden fazla teknik" },
{ name: "Hafif Masaj", name_tr: "Hafif Masaj", duration: "5 dakika", gif: gifUrl("Self Massage"), instructions: ["Erisilebilir bolgeleri hafifce masaj yapin", "Eller, kollar, boyuna odaklanin", "Hafif dairesel hareketler kullanin"], notes: "Rahatlama ve kan dolasimi" },
] },
{ day: 7, name: "Day 7 - Full Rest", type: "light_activity", focus: "Recovery", estimated_duration: 5, estimated_calories: 5, activities: [
{ name: "Mindful Rest", name_tr: "Bilinc Dinlenmesi", duration: "5 minutes", gif: gifUrl("Mindful Rest"), instructions: ["Simply rest", "Breathe naturally", "Be present"], notes: "Complete rest day" },
{ day: 7, name: "Gun 7 - Tam Dinlenme", type: "light_activity", focus: "Toparlanma", estimated_duration: 5, estimated_calories: 5, activities: [
{ name: "Bilinçli Dinlenme", name_tr: "Bilinc Dinlenmesi", duration: "5 dakika", gif: gifUrl("Mindful Rest"), instructions: ["Sadece dinlenin", "Dogal nefes alin", "Anda kalin"], notes: "Tam dinlenme gunu" },
] },
],
};
@@ -622,16 +622,16 @@ function getAlternativeExercises(injuryArea, count) {
function buildWarmupRoutine(profile) {
const injuryArea = profile.has_injury ? (profile.injury_area || "none") : "none";
const warmup = [
{ name: "General Warm-Up (Light Cardio)", duration: "5 min", notes: "Treadmill, bike, or jumping jacks to raise heart rate" },
{ name: "Dynamic Stretching", duration: "3 min", notes: "Arm circles, leg swings, torso rotations" },
{ name: "Genel Isinma (Hafif Kardiyo)", duration: "5 dk", notes: "Kalp atisini yukseltmek icin kosus bandi, bisiklet veya jumping jack" },
{ name: "Dinamik Germe", duration: "3 dk", notes: "Kol civirleri, bacak sallamalari, govde rotasyonlari" },
];
if (profile.has_asthma) {
warmup[0].notes += " - Extend to 8-10 min for asthma; gradual intensity increase is important";
warmup[0].notes += " - Astim icin 8-10 dk'ya uzatin; kademeli yogunluk artisi onemlidir";
}
if (profile.has_diabetes) {
warmup.push({ name: "Blood Sugar Check", duration: "1 min", notes: "Check blood sugar before exercise. Ensure it is between 100-250 mg/dL" });
warmup.push({ name: "Kan Sekeri Kontrolu", duration: "1 dk", notes: "Egzersiz oncesi kan sekerini kontrol edin. 100-250 mg/dL arasinda oldugundan emin olun" });
}
if (injuryArea !== "none" && INJURY_WARMUPS[injuryArea]) {
@@ -640,7 +640,7 @@ function buildWarmupRoutine(profile) {
const jobType = profile.job_type || "";
if (jobType === "desk" || jobType === "office" || jobType === "masa_basi") {
warmup.push({ name: "Posture Correction Mobility", duration: "3 min", notes: "Shoulder and hip opening for desk workers" });
warmup.push({ name: "Durus Duzeltme Mobilitesi", duration: "3 dk", notes: "Masa basi calisanlar icin omuz ve kalca acma" });
}
return warmup;
@@ -648,20 +648,24 @@ function buildWarmupRoutine(profile) {
function buildCooldown(profile) {
const injuryArea = profile.has_injury ? (profile.injury_area || "none") : "none";
const areaNamesTR = {
knee: "Diz", back: "Sirt", shoulder: "Omuz", elbow: "Dirsek",
wrist: "Bilek", ankle: "Ayak Bilegi", hip: "Kalca", neck: "Boyun",
};
const cooldown = [
{ name: "General Stretching", duration: "5 min", notes: "Stretch all worked muscle groups" },
{ name: "Genel Germe", duration: "5 dk", notes: "Calisan tum kas gruplarini gerin" },
];
if (injuryArea !== "none") {
const areaName = injuryArea.charAt(0).toUpperCase() + injuryArea.slice(1);
cooldown.push({ name: `${areaName} Area Specific Stretching`, duration: "3 min", notes: "Targeted stretching for injury area" });
const areaName = areaNamesTR[injuryArea] || (injuryArea.charAt(0).toUpperCase() + injuryArea.slice(1));
cooldown.push({ name: `${areaName} Bolgesi Ozel Germe`, duration: "3 dk", notes: "Yaralanma bolgesi icin hedefli germe" });
}
if (profile.has_diabetes) {
cooldown.push({ name: "Post-Exercise Blood Sugar Check", duration: "1 min", notes: "Monitor blood sugar after exercise" });
cooldown.push({ name: "Egzersiz Sonrasi Kan Sekeri Kontrolu", duration: "1 dk", notes: "Egzersiz sonrasi kan sekerini izleyin" });
}
cooldown.push({ name: "Deep Breathing & Relaxation", duration: "2 min", notes: "Breathe in 4 seconds, hold 4 seconds, breathe out 4 seconds" });
cooldown.push({ name: "Derin Nefes & Rahatlama", duration: "2 dk", notes: "4 saniye nefes alin, 4 saniye tutun, 4 saniye nefes verin" });
return cooldown;
}
@@ -671,38 +675,38 @@ function buildCooldown(profile) {
function buildGeneralTips(profile) {
const tips = [
"Warm up 5-10 minutes before every workout",
"Cool down and stretch 5-10 minutes after every workout",
"Drink at least 2-3 liters of water daily",
"Prioritize sleep (7-9 hours per night)",
"Stop any exercise immediately if you feel pain",
"Take at least 1 full rest day per week",
"Her antrenmandan once 5-10 dakika isinma yapin",
"Her antrenmandan sonra 5-10 dakika soguma ve germe yapin",
"Gunluk en az 2-3 litre su icin",
"Uykuyu onceliklendirin (gecede 7-9 saat)",
"Agri hissederseniz herhangi bir egzersizi hemen durdurun",
"Haftada en az 1 tam dinlenme gunu alin",
];
const experience = profile.workout_experience || "beginner";
if (experience === "beginner") {
tips.push("Beginner level: Prioritize form and technique over weight. Increase weights gradually.");
tips.push("Baslangic seviyesi: Agirliktan once form ve teknige oncelik verin. Agirliklari kademeli artirin.");
} else if (experience === "advanced") {
tips.push("Advanced level: Apply progressive overload. Consider super-sets and drop-sets for intensity.");
tips.push("Ileri seviye: Kademeli artan yuk uygulayin. Yogunluk icin super-set ve drop-set dusunun.");
}
const bodyType = profile.body_type || "mesomorph";
if (bodyType === "ectomorph") {
tips.push("Ectomorph body type: Focus on compound movements, limit excess cardio, maintain calorie surplus.");
tips.push("Ektomorf vucut tipi: Bileşik hareketlere odaklanin, fazla kardiyoyu sinirlayin, kalori fazlasini koruyun.");
} else if (bodyType === "endomorph") {
tips.push("Endomorph body type: Add post-workout cardio, watch portion sizes, prefer HIIT cardio.");
tips.push("Endomorf vucut tipi: Antrenman sonrasi kardiyo ekleyin, porsiyon boyutlarina dikkat edin, HIIT kardiyo tercih edin.");
}
if ((profile.sleep_hours || 7) < 6) {
tips.push("Your sleep is insufficient: Avoid overtraining, prioritize recovery.");
tips.push("Uykunuz yetersiz: Asiri antrenmandan kacinin, toparlanmayi onceliklendirin.");
}
if (profile.stress_level === "high") {
tips.push("High stress level: Add meditation and breathing exercises. Training volume has been reduced.");
tips.push("Yuksek stres seviyesi: Meditasyon ve nefes egzersizleri ekleyin. Antrenman hacmi azaltildi.");
}
const jobType = profile.job_type || "";
if (jobType === "desk" || jobType === "office" || jobType === "masa_basi") {
tips.push("Desk worker: Stand up and move every hour. Include posture correction exercises.");
tips.push("Masa basi calisan: Her saat ayaga kalkin ve hareket edin. Durus duzeltme egzersizleri ekleyin.");
}
return tips;
@@ -712,28 +716,28 @@ function buildMedicalNotes(profile) {
const notes = [];
if (profile.heart_condition) {
notes.push("Heart condition: Low intensity only. No HIIT. Monitor heart rate and stay in safe zones (50-65% max HR). Stop if dizzy or chest pain.");
notes.push("Kalp rahatsizligi: Sadece dusuk yogunluk. HIIT yok. Kalp atisini izleyin ve guvenli bolgelerde kalin (maks KH %50-65). Bas donmesi veya gogus agrisi olursa durdurun.");
}
if (profile.blood_pressure === "high" || profile.high_blood_pressure) {
notes.push("High blood pressure: No heavy lifting or breath holding (Valsalva). Avoid overhead pressing. Keep intensity moderate. Monitor blood pressure regularly.");
notes.push("Yuksek tansiyon: Agir kaldirma veya nefes tutma (Valsalva) yok. Bas ustu basma hareketi yapmayin. Yogunlugu orta seviyede tutun. Tansiyonu duzenli olcun.");
}
if (profile.has_asthma) {
notes.push("Asthma: Extended warm-up is important. Keep inhaler nearby. Avoid cold environments. Moderate cardio intensity.");
notes.push("Astim: Uzun isinma onemlidir. Inhalatoru yaninizda bulundurun. Soguk ortamlardan kacinin. Orta kardiyo yogunlugu.");
}
if (profile.has_diabetes) {
notes.push("Diabetes: Check blood sugar before and after exercise. Include warm-up and cool-down. Avoid fasted training. Carry fast-acting sugar.");
notes.push("Diyabet: Egzersiz oncesi ve sonrasi kan sekerini kontrol edin. Isinma ve soguma dahil edin. Ac karnina antrenman yapmayin. Hizli etkili seker tasiyin.");
}
if (profile.has_arthritis) {
notes.push("Arthritis: Low impact exercises only. Joint-friendly movements. Consider swimming/water exercises if available. Longer warm-ups help.");
notes.push("Artrit: Sadece dusuk etkili egzersizler. Eklem dostu hareketler. Mumkunse yuzme/su egzersizlerini dusunun. Uzun isinmalar yardimci olur.");
}
if (profile.has_osteoporosis) {
notes.push("Osteoporosis: Weight-bearing exercises are beneficial but avoid high impact. No trunk flexion exercises. Focus on balance to prevent falls.");
notes.push("Osteoporoz: Agirlik tasiyan egzersizler faydalıdir ama yuksek etkiden kacinin. Govde bukme egzersizi yapmayin. Dusmeleri onlemek icin dengeye odaklanin.");
}
if (profile.has_fibromyalgia) {
notes.push("Fibromyalgia: Gentle, low-intensity exercises only. Focus on stretching and yoga-based movements. Listen to your body. Volume has been reduced.");
notes.push("Fibromiyalji: Sadece hafif, dusuk yogunluklu egzersizler. Germe ve yoga tabanli hareketlere odaklanin. Vucudunuzu dinleyin. Hacim azaltildi.");
}
if (profile.has_epilepsy) {
notes.push("Epilepsy: Avoid exercises where falling could be dangerous (no heavy overhead lifts, no climbing). Train with a partner when possible.");
notes.push("Epilepsi: Dusmenin tehlikeli olabilecegi egzersizlerden kacinin (agir bas ustu kaldirma yok, tirmanma yok). Mumkun oldugunda bir partnerle antrenman yapin.");
}
return notes;
@@ -743,26 +747,26 @@ function buildInjuryNote(profile) {
if (!profile.has_injury || !profile.injury_area || profile.injury_area === "none") return null;
const areaNames = {
knee: "Knee", back: "Back/Lower Back", shoulder: "Shoulder", elbow: "Elbow",
wrist: "Wrist", ankle: "Ankle", hip: "Hip", neck: "Neck",
knee: "Diz", back: "Sirt/Bel", shoulder: "Omuz", elbow: "Dirsek",
wrist: "Bilek", ankle: "Ayak Bilegi", hip: "Kalca", neck: "Boyun",
};
const severityNames = {
mild: "mild", moderate: "moderate", severe: "severe",
mild: "hafif", moderate: "orta", severe: "agir",
};
const areas = String(profile.injury_area).split(",").map((s) => s.trim()).filter((s) => s && s !== "none");
const areaName = areas.map((a) => areaNames[a] || a).join(", ");
const severityName = severityNames[profile.injury_severity] || "mild";
let note = `Program adapted for ${severityName} ${areaName} injury.`;
const severityName = severityNames[profile.injury_severity] || "hafif";
let note = `Program ${severityName} ${areaName} yaralanmasina gore uyarlandi.`;
if (profile.injury_notes) {
note += ` Note: ${profile.injury_notes}`;
note += ` Not: ${profile.injury_notes}`;
}
if (profile.injury_severity === "severe") {
note += " Intensity significantly reduced due to severe injury. Do not train heavy without doctor approval.";
note += " Agir yaralanma nedeniyle yogunluk onemli olcude azaltildi. Doktor onayi olmadan agir antrenman yapmayin.";
} else if (profile.injury_severity === "moderate") {
note += " Exercise with caution and control. Stop if pain increases.";
note += " Dikkatli ve kontrollü egzersiz yapin. Agri artarsa durdurun.";
}
return note;
@@ -862,7 +866,7 @@ function buildStrengthDay(dayNumber, dayName, focus, muscleGroups, profile, week
return {
day: dayNumber,
name: `Day ${dayNumber} - ${dayName}`,
name: `Gun ${dayNumber} - ${dayName}`,
type: "strength",
focus: focus,
estimated_duration: estimateDayDuration(exercises),
@@ -901,7 +905,7 @@ function buildCardioDay(dayNumber, dayName, focus, profile, week) {
return {
day: dayNumber,
name: `Day ${dayNumber} - ${dayName}`,
name: `Gun ${dayNumber} - ${dayName}`,
type: "cardio",
focus: focus,
estimated_duration: estimateDayDuration(exercises),
@@ -924,15 +928,15 @@ function buildFlexibilityDay(dayNumber, dayName, profile, week) {
return {
day: dayNumber,
name: `Day ${dayNumber} - ${dayName}`,
name: `Gun ${dayNumber} - ${dayName}`,
type: "active_recovery",
focus: "Flexibility & Recovery",
focus: "Esneklik & Toparlanma",
estimated_duration: 25,
estimated_calories: 40,
warmup: [{ name: "Light Movement", duration: "3 min", notes: "Easy walking or gentle arm swings" }],
warmup: [{ name: "Hafif Hareket", duration: "3 dk", notes: "Kolay yuruyus veya hafif kol sallamalari" }],
exercises: formattedExercises,
cooldown: [{ name: "Deep Breathing & Meditation", duration: "5 min", notes: "Full relaxation for recovery" }],
notes: ["Active recovery day - focus on mobility and flexibility", "Keep all movements gentle and controlled"],
cooldown: [{ name: "Derin Nefes & Meditasyon", duration: "5 dk", notes: "Toparlanma icin tam rahatlama" }],
notes: ["Aktif toparlanma gunu - mobilite ve esneklige odaklanin", "Tum hareketleri yumusak ve kontrollü tutun"],
};
}
@@ -947,15 +951,15 @@ function buildRestDay(dayNumber, dayName, profile, week) {
return {
day: dayNumber,
name: `Day ${dayNumber} - Rest`,
name: `Gun ${dayNumber} - Dinlenme`,
type: "rest",
focus: "Active Rest & Flexibility",
focus: "Aktif Dinlenme & Esneklik",
estimated_duration: 20,
estimated_calories: 30,
warmup: [],
exercises: formattedExercises,
cooldown: [{ name: "Deep Breathing & Meditation", duration: "5 min", notes: "Focus on recovery and relaxation" }],
notes: ["Rest day - listen to your body", "Light stretching and walking are encouraged"],
cooldown: [{ name: "Derin Nefes & Meditasyon", duration: "5 dk", notes: "Toparlanma ve rahatlamaya odaklanin" }],
notes: ["Dinlenme gunu - vucudunuzu dinleyin", "Hafif germe ve yuruyus tavsiye edilir"],
};
}
@@ -1217,7 +1221,7 @@ function generateLightActivityPlan(profile, week) {
adjustedDay.warmup = [];
adjustedDay.exercises = [];
adjustedDay.cooldown = [];
adjustedDay.notes = [`Week ${week}: ${weekConfig.description}`];
adjustedDay.notes = [`Hafta ${week}: ${weekConfig.description}`];
return adjustedDay;
});
}
@@ -1236,17 +1240,17 @@ function generateWorkoutProgram(profile, week = 1) {
if (workoutLocation === "none") {
const lightDays = generateLightActivityPlan(profile, normalizedWeek);
return {
title: "Personal Light Activity Plan",
description: "A gentle daily activity plan designed for your current situation. Focus on movement quality, breathing, and gradual improvement.",
title: "Kisisel Hafif Aktivite Plani",
description: "Mevcut durumunuz icin tasarlanmis hafif gunluk aktivite plani. Hareket kalitesi, nefes ve kademeli gelisime odaklanin.",
week: normalizedWeek,
mesocycle_phase: mesocycleConfig.phase,
workout_location: "none",
experience_level: experience,
notes: [
"This is a light activity plan, not a workout program",
"Listen to your body and rest when needed",
"Consistency matters more than intensity",
"Consult your doctor before starting any new exercise routine",
"Bu bir hafif aktivite planidir, antrenman programi degildir",
"Vucudunuzu dinleyin ve gerektiginde dinlenin",
"Tutarlilik yogunluktan daha onemlidir",
"Yeni bir egzersiz rutinine baslamadan once doktorunuza danisin",
],
general_tips: buildGeneralTips(profile),
injury_note: buildInjuryNote(profile),
@@ -1262,16 +1266,16 @@ function generateWorkoutProgram(profile, week = 1) {
const adjustedDays = applyGoalAdjustments(days, profile, normalizedWeek);
return {
title: "Personal Wheelchair-Adapted Training Program",
description: "Upper body focused program adapted for wheelchair users. All exercises are seated or upper body only.",
title: "Kisisel Tekerlekli Sandalye Uyumlu Antrenman Programi",
description: "Tekerlekli sandalye kullananlar icin uyarlanmis ust vucut odakli program. Tum egzersizler oturarak veya sadece ust vucuttur.",
week: normalizedWeek,
mesocycle_phase: mesocycleConfig.phase,
workout_location: workoutLocation,
experience_level: experience,
notes: [
"All exercises adapted for seated position",
"Focus on upper body strength and core stability",
"Include shoulder health and posture exercises",
"Tum egzersizler oturma pozisyonuna uyarlanmistir",
"Ust vucut gucu ve core stabilitesine odaklanin",
"Omuz sagligi ve durus egzersizleri dahil edin",
],
general_tips: buildGeneralTips(profile),
injury_note: buildInjuryNote(profile),
@@ -1283,16 +1287,16 @@ function generateWorkoutProgram(profile, week = 1) {
// Limited both - generate light activity even if location is gym/home
const lightDays = generateLightActivityPlan(profile, normalizedWeek);
return {
title: "Personal Gentle Movement Plan",
description: "A gentle movement plan adapted for your mobility level. Focus on what you can do comfortably.",
title: "Kisisel Hafif Hareket Plani",
description: "Mobilite seviyenize uyarlanmis hafif hareket plani. Rahatca yapabileceklerinize odaklanin.",
week: normalizedWeek,
mesocycle_phase: mesocycleConfig.phase,
workout_location: workoutLocation,
experience_level: experience,
notes: [
"Gentle movements only - stay within your comfort zone",
"Focus on breathing and mobility",
"Any movement is beneficial",
"Sadece hafif hareketler - konfor bolgenizde kalin",
"Nefes ve mobiliteye odaklanin",
"Her hareket faydalıdir",
],
general_tips: buildGeneralTips(profile),
injury_note: buildInjuryNote(profile),
@@ -1321,10 +1325,12 @@ function generateWorkoutProgram(profile, week = 1) {
days = adjustCardioRestDays(days, profile, normalizedWeek);
const title = workoutLocation === "home"
? "Personal Home Training Program"
: "Personal Training Program";
? "Kisisel Ev Antrenman Programi"
: "Kisisel Antrenman Programi";
const description = `${experience.charAt(0).toUpperCase() + experience.slice(1)} level ${workoutLocation} training program. Week ${normalizedWeek} of 4 (${mesocycleConfig.phase}).`;
const experienceTR = { beginner: "Baslangic", intermediate: "Orta", advanced: "Ileri" };
const locationTR = { gym: "spor salonu", home: "ev" };
const description = `${experienceTR[experience] || experience} seviye ${locationTR[workoutLocation] || workoutLocation} antrenman programi. Hafta ${normalizedWeek}/4 (${mesocycleConfig.phase}).`;
return {
title: title,
@@ -1334,7 +1340,7 @@ function generateWorkoutProgram(profile, week = 1) {
workout_location: workoutLocation,
experience_level: experience,
notes: [
`Mesocycle phase: ${mesocycleConfig.phase} - ${mesocycleConfig.description}`,
`Mezosiklus fazi: ${mesocycleConfig.phase} - ${mesocycleConfig.description}`,
],
general_tips: buildGeneralTips(profile),
injury_note: buildInjuryNote(profile),