This commit is contained in:
ytc1012
2025-12-02 16:38:58 +08:00
parent ef44d11c32
commit 86a368e1e3
34 changed files with 2767 additions and 686 deletions

View File

@@ -50,7 +50,19 @@
"Bash(then find android/app/build/outputs -type f ( -name \"*.aab\" -o -name \"*.apk\" ))",
"Bash(else echo \"outputs 目录不存在,可能还未构建过\")",
"Bash(fi)",
"Bash(tasklist:*)"
"Bash(tasklist:*)",
"Bash(flutter pub outdated:*)",
"Bash(find:*)",
"Bash(java:*)",
"Bash(mkdir:*)",
"Bash(keytool:*)",
"Bash(call android\\gradlew.bat:*)",
"Bash(./android/gradlew.bat:*)",
"Bash(\"F:\\Program Files\\Eclipse Adoptium\\jdk-17.0.17.10-hotspot\\bin\\keytool.exe\":*)",
"Bash(\"F:\\Program Files\\Eclipse Adoptium\\jdk-17.0.17.10-hotspot\\bin\\jarsigner.exe\":*)",
"Bash(del:*)",
"Bash(rm:*)",
"Bash(git add:*)"
],
"deny": [],
"ask": []

View File

@@ -1,3 +1,6 @@
import java.util.Properties
import java.io.FileInputStream
plugins {
id("com.android.application")
id("kotlin-android")
@@ -5,6 +8,13 @@ plugins {
id("dev.flutter.flutter-gradle-plugin")
}
// Load keystore properties
val keystorePropertiesFile = rootProject.file("key.properties")
val keystoreProperties = Properties()
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
}
android {
namespace = "com.focusbuddy.focus_buddy"
compileSdk = flutter.compileSdkVersion
@@ -31,11 +41,18 @@ android {
versionName = flutter.versionName
}
signingConfigs {
create("release") {
keyAlias = keystoreProperties.getProperty("keyAlias")
keyPassword = keystoreProperties.getProperty("keyPassword")
storeFile = keystoreProperties.getProperty("storeFile")?.let { rootProject.file(it) }
storePassword = keystoreProperties.getProperty("storePassword")
}
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig = signingConfigs.getByName("debug")
signingConfig = signingConfigs.getByName("release")
}
}
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "النقاط",
"level": "المستوى",
"checked": "تم التسجيل",
"checkIn": "تسجيل الحضور",
"earnedPoints": "المكتسب:",
"basePoints": "النقاط الأساسية",
"honestyBonus": "مكافأة الصدق",
"totalPoints": "إجمالي النقاط: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} مسجلة)",
"achievementUnlocked": "🎖️ إنجاز مفتوح!",
"bonusPoints": "+{points} نقاط ⚡",
"checkInSuccess": "تسجيل الحضور ناجح! +{points} نقاط ⚡",
"weeklyStreakBonus": "🎉 مكافأة السلسلة الأسبوعية!",
"newAchievementUnlocked": "🎖️ إنجاز جديد مفتوح!",
"alreadyCheckedIn": "لقد سجلت حضورك اليوم بالفعل! عد غدًا 📅",
"checkInCalendar": "تقويم تسجيل الحضور 📅",
"checkInToday": "📅 سجل الحضور اليوم",
"checkedInToday": "✓ تم التسجيل اليوم",
"currentStreak": "🔥 السلسلة الحالية",
"longestStreak": "🏆 أطول سلسلة",
"days": "أيام",
"daysCount": "{count} أيام",
"achievements": "الإنجازات 🎖️",
"viewAllAchievements": "عرض جميع الإنجازات",
"allAchievementsComingSoon": "شاشة الإنجازات الكاملة قريبًا!",
"profile": "الملف الشخصي",
"focuser": "المركز",
"pointsToNextLevel": "{points} نقاط إلى المستوى {level}",
"achievement_first_session_name": "مبتدئ التركيز",
"achievement_first_session_desc": "أكمل جلسة التركيز الأولى",
"achievement_sessions_10_name": "البداية",
"achievement_sessions_10_desc": "أكمل 10 جلسات تركيز",
"achievement_sessions_50_name": "عاشق التركيز",
"achievement_sessions_50_desc": "أكمل 50 جلسة تركيز",
"achievement_sessions_100_name": "سيد التركيز",
"achievement_sessions_100_desc": "أكمل 100 جلسة تركيز",
"achievement_honest_bronze_name": "المتتبع الصادق · برونزي",
"achievement_honest_bronze_desc": "سجل 50 تشتتًا بصدق",
"achievement_honest_silver_name": "المتتبع الصادق · فضي",
"achievement_honest_silver_desc": "سجل 200 تشتت بصدق",
"achievement_honest_gold_name": "المتتبع الصادق · ذهبي",
"achievement_honest_gold_desc": "سجل 500 تشتت بصدق",
"achievement_marathon_name": "عداء الماراثون",
"achievement_marathon_desc": "اجمع 10 ساعات من وقت التركيز",
"achievement_century_name": "نادي القرن",
"achievement_century_desc": "اجمع 100 ساعة من وقت التركيز",
"achievement_master_name": "جراند ماستر التركيز",
"achievement_master_desc": "اجمع 1000 ساعة من وقت التركيز",
"achievement_persistence_star_name": "نجمة المثابرة",
"achievement_persistence_star_desc": "سجل الحضور لمدة 7 أيام متتالية",
"achievement_monthly_habit_name": "العادة الشهرية",
"achievement_monthly_habit_desc": "سجل الحضور لمدة 30 يومًا متتاليًا",
"achievement_centurion_name": "المئوي",
"achievement_centurion_desc": "سجل الحضور لمدة 100 يوم متتالٍ",
"achievement_year_warrior_name": "محارب العام",
"achievement_year_warrior_desc": "سجل الحضور لمدة 365 يومًا متتاليًا",
"total": "الإجمالي",
"status": "الحالة",
"pointsBreakdown": "تفصيل النقاط",
"focusTimePoints": "وقت التركيز",
"focusTimePointsDesc": "نقطة واحدة لكل دقيقة تركيز",
"honestyBonusLabel": "مكافأة الصدق",
"honestyBonusDesc": "نقاط إضافية لتسجيل التشتتات",
"checkInPoints": "تسجيل الحضور اليومي",
"checkInPointsDesc": "النقاط الأساسية لتسجيل الحضور اليومي",
"streakBonus": "مكافأة السلسلة",
"streakBonusDesc": "{days} تسجيلات حضور متتالية",
"achievementBonusLabel": "مكافأة الإنجاز",
"weekdayS": "ح",
"weekdayM": "ن",
"weekdayT": "ث",
"weekdayW": "ر",
"weekdayTh": "خ",
"weekdayF": "ج",
"weekdaySa": "س"
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "Punkte",
"level": "Level",
"checked": "Geprüft",
"checkIn": "Einchecken",
"earnedPoints": "Verdient:",
"basePoints": "Basispunkte",
"honestyBonus": "Ehrlichkeitsbonus",
"totalPoints": "Gesamt Punkte: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} aufgezeichnet)",
"achievementUnlocked": "🎖️ Erfolg freigeschaltet!",
"bonusPoints": "+{points} Punkte ⚡",
"checkInSuccess": "Check-in erfolgreich! +{points} Punkte ⚡",
"weeklyStreakBonus": "🎉 Wöchentlicher Streak-Bonus!",
"newAchievementUnlocked": "🎖️ Neuer Erfolg freigeschaltet!",
"alreadyCheckedIn": "Du hast heute bereits eingecheckt! Komm morgen wieder 📅",
"checkInCalendar": "Check-in-Kalender 📅",
"checkInToday": "📅 Heute einchecken",
"checkedInToday": "✓ Heute eingecheckt",
"currentStreak": "🔥 Aktueller Streak",
"longestStreak": "🏆 Längster Streak",
"days": "Tage",
"daysCount": "{count} Tage",
"achievements": "Erfolge 🎖️",
"viewAllAchievements": "Alle Erfolge anzeigen",
"allAchievementsComingSoon": "Vollständiger Erfolge-Bildschirm kommt bald!",
"profile": "Profil",
"focuser": "Fokussierer",
"pointsToNextLevel": "{points} Punkte bis Level {level}",
"achievement_first_session_name": "Fokus-Neuling",
"achievement_first_session_desc": "Schließe deine erste Fokussitzung ab",
"achievement_sessions_10_name": "Erste Schritte",
"achievement_sessions_10_desc": "Schließe 10 Fokussitzungen ab",
"achievement_sessions_50_name": "Fokus-Enthusiast",
"achievement_sessions_50_desc": "Schließe 50 Fokussitzungen ab",
"achievement_sessions_100_name": "Fokus-Meister",
"achievement_sessions_100_desc": "Schließe 100 Fokussitzungen ab",
"achievement_honest_bronze_name": "Ehrlicher Tracker · Bronze",
"achievement_honest_bronze_desc": "Zeichne 50 Ablenkungen ehrlich auf",
"achievement_honest_silver_name": "Ehrlicher Tracker · Silber",
"achievement_honest_silver_desc": "Zeichne 200 Ablenkungen ehrlich auf",
"achievement_honest_gold_name": "Ehrlicher Tracker · Gold",
"achievement_honest_gold_desc": "Zeichne 500 Ablenkungen ehrlich auf",
"achievement_marathon_name": "Marathon-Läufer",
"achievement_marathon_desc": "Sammle 10 Stunden Fokuszeit",
"achievement_century_name": "Jahrhundert-Club",
"achievement_century_desc": "Sammle 100 Stunden Fokuszeit",
"achievement_master_name": "Fokus-Großmeister",
"achievement_master_desc": "Sammle 1000 Stunden Fokuszeit",
"achievement_persistence_star_name": "Beharrlichkeitsstern",
"achievement_persistence_star_desc": "Checke 7 Tage in Folge ein",
"achievement_monthly_habit_name": "Monatliche Gewohnheit",
"achievement_monthly_habit_desc": "Checke 30 Tage in Folge ein",
"achievement_centurion_name": "Zenturio",
"achievement_centurion_desc": "Checke 100 Tage in Folge ein",
"achievement_year_warrior_name": "Jahreskrieger",
"achievement_year_warrior_desc": "Checke 365 Tage in Folge ein",
"total": "Gesamt",
"status": "Status",
"pointsBreakdown": "Punkteaufschlüsselung",
"focusTimePoints": "Fokuszeit",
"focusTimePointsDesc": "1 Punkt pro Minute Fokus",
"honestyBonusLabel": "Ehrlichkeitsbonus",
"honestyBonusDesc": "Extrapunkte für das Aufzeichnen von Ablenkungen",
"checkInPoints": "Täglicher Check-in",
"checkInPointsDesc": "Basispunkte für täglichen Check-in",
"streakBonus": "Streak-Bonus",
"streakBonusDesc": "{days} aufeinanderfolgende Check-ins",
"achievementBonusLabel": "Erfolgsbonus",
"weekdayS": "S",
"weekdayM": "M",
"weekdayT": "D",
"weekdayW": "M",
"weekdayTh": "D",
"weekdayF": "F",
"weekdaySa": "S"
}

View File

@@ -531,5 +531,105 @@
"achievement_year_warrior_desc": "Check in for 365 consecutive days",
"@achievement_year_warrior_desc": {
"description": "365 day streak achievement description"
},
"total": "Total",
"@total": {
"description": "Total label (e.g., total time)"
},
"status": "Status",
"@status": {
"description": "Status label"
},
"pointsBreakdown": "Points Breakdown",
"@pointsBreakdown": {
"description": "Points breakdown section title"
},
"focusTimePoints": "Focus Time",
"@focusTimePoints": {
"description": "Points from focus time label"
},
"focusTimePointsDesc": "1 point per minute of focus",
"@focusTimePointsDesc": {
"description": "Focus time points description"
},
"honestyBonusLabel": "Honesty Bonus",
"@honestyBonusLabel": {
"description": "Honesty bonus label in breakdown"
},
"honestyBonusDesc": "Extra points for recording distractions",
"@honestyBonusDesc": {
"description": "Honesty bonus description"
},
"checkInPoints": "Daily Check-In",
"@checkInPoints": {
"description": "Daily check-in points label"
},
"checkInPointsDesc": "Base points for daily check-in",
"@checkInPointsDesc": {
"description": "Daily check-in points description"
},
"streakBonus": "Streak Bonus",
"@streakBonus": {
"description": "Streak bonus label"
},
"streakBonusDesc": "{days} consecutive check-ins",
"@streakBonusDesc": {
"description": "Streak bonus description",
"placeholders": {
"days": {
"type": "int"
}
}
},
"achievementBonusLabel": "Achievement Bonus",
"@achievementBonusLabel": {
"description": "Achievement bonus points label"
},
"weekdayS": "S",
"@weekdayS": {
"description": "Sunday abbreviation"
},
"weekdayM": "M",
"@weekdayM": {
"description": "Monday abbreviation"
},
"weekdayT": "T",
"@weekdayT": {
"description": "Tuesday abbreviation"
},
"weekdayW": "W",
"@weekdayW": {
"description": "Wednesday abbreviation"
},
"weekdayTh": "T",
"@weekdayTh": {
"description": "Thursday abbreviation"
},
"weekdayF": "F",
"@weekdayF": {
"description": "Friday abbreviation"
},
"weekdaySa": "S",
"@weekdaySa": {
"description": "Saturday abbreviation"
}
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "Puntos",
"level": "Nivel",
"checked": "Registrado",
"checkIn": "Registrarse",
"earnedPoints": "Ganado:",
"basePoints": "Puntos Base",
"honestyBonus": "Bono de Honestidad",
"totalPoints": "Puntos Totales: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} registradas)",
"achievementUnlocked": "🎖️ ¡Logro Desbloqueado!",
"bonusPoints": "+{points} Puntos ⚡",
"checkInSuccess": "¡Registro exitoso! +{points} puntos ⚡",
"weeklyStreakBonus": "🎉 ¡Bono de racha semanal!",
"newAchievementUnlocked": "🎖️ ¡Nuevo logro desbloqueado!",
"alreadyCheckedIn": "¡Ya te registraste hoy! Vuelve mañana 📅",
"checkInCalendar": "Calendario de Registro 📅",
"checkInToday": "📅 Registrarse Hoy",
"checkedInToday": "✓ Registrado Hoy",
"currentStreak": "🔥 Racha Actual",
"longestStreak": "🏆 Racha Más Larga",
"days": "días",
"daysCount": "{count} días",
"achievements": "Logros 🎖️",
"viewAllAchievements": "Ver Todos los Logros",
"allAchievementsComingSoon": "¡Pantalla completa de logros próximamente!",
"profile": "Perfil",
"focuser": "Enfocador",
"pointsToNextLevel": "{points} puntos para Nivel {level}",
"achievement_first_session_name": "Novato del Enfoque",
"achievement_first_session_desc": "Completa tu primera sesión de enfoque",
"achievement_sessions_10_name": "Comenzando",
"achievement_sessions_10_desc": "Completa 10 sesiones de enfoque",
"achievement_sessions_50_name": "Entusiasta del Enfoque",
"achievement_sessions_50_desc": "Completa 50 sesiones de enfoque",
"achievement_sessions_100_name": "Maestro del Enfoque",
"achievement_sessions_100_desc": "Completa 100 sesiones de enfoque",
"achievement_honest_bronze_name": "Registrador Honesto · Bronce",
"achievement_honest_bronze_desc": "Registra 50 distracciones honestamente",
"achievement_honest_silver_name": "Registrador Honesto · Plata",
"achievement_honest_silver_desc": "Registra 200 distracciones honestamente",
"achievement_honest_gold_name": "Registrador Honesto · Oro",
"achievement_honest_gold_desc": "Registra 500 distracciones honestamente",
"achievement_marathon_name": "Corredor de Maratón",
"achievement_marathon_desc": "Acumula 10 horas de tiempo de enfoque",
"achievement_century_name": "Club del Siglo",
"achievement_century_desc": "Acumula 100 horas de tiempo de enfoque",
"achievement_master_name": "Gran Maestro del Enfoque",
"achievement_master_desc": "Acumula 1000 horas de tiempo de enfoque",
"achievement_persistence_star_name": "Estrella de Persistencia",
"achievement_persistence_star_desc": "Regístrate durante 7 días consecutivos",
"achievement_monthly_habit_name": "Hábito Mensual",
"achievement_monthly_habit_desc": "Regístrate durante 30 días consecutivos",
"achievement_centurion_name": "Centurión",
"achievement_centurion_desc": "Regístrate durante 100 días consecutivos",
"achievement_year_warrior_name": "Guerrero del Año",
"achievement_year_warrior_desc": "Regístrate durante 365 días consecutivos",
"total": "Total",
"status": "Estado",
"pointsBreakdown": "Desglose de Puntos",
"focusTimePoints": "Tiempo de Enfoque",
"focusTimePointsDesc": "1 punto por minuto de enfoque",
"honestyBonusLabel": "Bono de Honestidad",
"honestyBonusDesc": "Puntos extra por registrar distracciones",
"checkInPoints": "Registro Diario",
"checkInPointsDesc": "Puntos base por primer registro del día",
"streakBonus": "Bono de Racha",
"streakBonusDesc": "{days} registros consecutivos",
"achievementBonusLabel": "Bono de Logro",
"weekdayS": "D",
"weekdayM": "L",
"weekdayT": "M",
"weekdayW": "X",
"weekdayTh": "J",
"weekdayF": "V",
"weekdaySa": "S"
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "Points",
"level": "Niveau",
"checked": "Vérifié",
"checkIn": "S'enregistrer",
"earnedPoints": "Gagné:",
"basePoints": "Points de base",
"honestyBonus": "Bonus d'honnêteté",
"totalPoints": "Total des points: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} enregistrées)",
"achievementUnlocked": "🎖️ Succès débloqué!",
"bonusPoints": "+{points} Points ⚡",
"checkInSuccess": "Enregistrement réussi! +{points} points ⚡",
"weeklyStreakBonus": "🎉 Bonus de série hebdomadaire!",
"newAchievementUnlocked": "🎖️ Nouveau succès débloqué!",
"alreadyCheckedIn": "Vous vous êtes déjà enregistré aujourd'hui! Revenez demain 📅",
"checkInCalendar": "Calendrier d'enregistrement 📅",
"checkInToday": "📅 S'enregistrer aujourd'hui",
"checkedInToday": "✓ Enregistré aujourd'hui",
"currentStreak": "🔥 Série actuelle",
"longestStreak": "🏆 Plus longue série",
"days": "jours",
"daysCount": "{count} jours",
"achievements": "Succès 🎖️",
"viewAllAchievements": "Voir tous les succès",
"allAchievementsComingSoon": "Écran complet des succès bientôt disponible!",
"profile": "Profil",
"focuser": "Concentrateur",
"pointsToNextLevel": "{points} points jusqu'au niveau {level}",
"achievement_first_session_name": "Débutant en concentration",
"achievement_first_session_desc": "Complétez votre première session de concentration",
"achievement_sessions_10_name": "Premiers pas",
"achievement_sessions_10_desc": "Complétez 10 sessions de concentration",
"achievement_sessions_50_name": "Passionné de concentration",
"achievement_sessions_50_desc": "Complétez 50 sessions de concentration",
"achievement_sessions_100_name": "Maître de la concentration",
"achievement_sessions_100_desc": "Complétez 100 sessions de concentration",
"achievement_honest_bronze_name": "Tracker honnête · Bronze",
"achievement_honest_bronze_desc": "Enregistrez 50 distractions honnêtement",
"achievement_honest_silver_name": "Tracker honnête · Argent",
"achievement_honest_silver_desc": "Enregistrez 200 distractions honnêtement",
"achievement_honest_gold_name": "Tracker honnête · Or",
"achievement_honest_gold_desc": "Enregistrez 500 distractions honnêtement",
"achievement_marathon_name": "Coureur de marathon",
"achievement_marathon_desc": "Accumulez 10 heures de temps de concentration",
"achievement_century_name": "Club du siècle",
"achievement_century_desc": "Accumulez 100 heures de temps de concentration",
"achievement_master_name": "Grand maître de la concentration",
"achievement_master_desc": "Accumulez 1000 heures de temps de concentration",
"achievement_persistence_star_name": "Étoile de la persévérance",
"achievement_persistence_star_desc": "Enregistrez-vous pendant 7 jours consécutifs",
"achievement_monthly_habit_name": "Habitude mensuelle",
"achievement_monthly_habit_desc": "Enregistrez-vous pendant 30 jours consécutifs",
"achievement_centurion_name": "Centurion",
"achievement_centurion_desc": "Enregistrez-vous pendant 100 jours consécutifs",
"achievement_year_warrior_name": "Guerrier de l'année",
"achievement_year_warrior_desc": "Enregistrez-vous pendant 365 jours consécutifs",
"total": "Total",
"status": "Statut",
"pointsBreakdown": "Répartition des points",
"focusTimePoints": "Temps de concentration",
"focusTimePointsDesc": "1 point par minute de concentration",
"honestyBonusLabel": "Bonus d'honnêteté",
"honestyBonusDesc": "Points supplémentaires pour l'enregistrement des distractions",
"checkInPoints": "Enregistrement quotidien",
"checkInPointsDesc": "Points de base pour l'enregistrement quotidien",
"streakBonus": "Bonus de série",
"streakBonusDesc": "{days} enregistrements consécutifs",
"achievementBonusLabel": "Bonus de succès",
"weekdayS": "D",
"weekdayM": "L",
"weekdayT": "M",
"weekdayW": "M",
"weekdayTh": "J",
"weekdayF": "V",
"weekdaySa": "S"
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "अंक",
"level": "स्तर",
"checked": "चेक किया",
"checkIn": "चेक-इन",
"earnedPoints": "अर्जित:",
"basePoints": "मूल अंक",
"honestyBonus": "ईमानदारी बोनस",
"totalPoints": "कुल अंक: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} रिकॉर्ड किया)",
"achievementUnlocked": "🎖️ उपलब्धि अनलॉक!",
"bonusPoints": "+{points} अंक ⚡",
"checkInSuccess": "चेक-इन सफल! +{points} अंक ⚡",
"weeklyStreakBonus": "🎉 साप्ताहिक स्ट्रीक बोनस!",
"newAchievementUnlocked": "🎖️ नई उपलब्धि अनलॉक!",
"alreadyCheckedIn": "आप आज पहले ही चेक-इन कर चुके हैं! कल वापस आएं 📅",
"checkInCalendar": "चेक-इन कैलेंडर 📅",
"checkInToday": "📅 आज चेक-इन करें",
"checkedInToday": "✓ आज चेक-इन हो गया",
"currentStreak": "🔥 वर्तमान स्ट्रीक",
"longestStreak": "🏆 सबसे लंबी स्ट्रीक",
"days": "दिन",
"daysCount": "{count} दिन",
"achievements": "उपलब्धियाँ 🎖️",
"viewAllAchievements": "सभी उपलब्धियाँ देखें",
"allAchievementsComingSoon": "पूर्ण उपलब्धि स्क्रीन जल्द आ रही है!",
"profile": "प्रोफ़ाइल",
"focuser": "फोकस करने वाला",
"pointsToNextLevel": "स्तर {level} के लिए {points} अंक",
"achievement_first_session_name": "फोकस नौसिखिया",
"achievement_first_session_desc": "अपना पहला फोकस सत्र पूरा करें",
"achievement_sessions_10_name": "शुरुआत",
"achievement_sessions_10_desc": "10 फोकस सत्र पूरे करें",
"achievement_sessions_50_name": "फोकस उत्साही",
"achievement_sessions_50_desc": "50 फोकस सत्र पूरे करें",
"achievement_sessions_100_name": "फोकस मास्टर",
"achievement_sessions_100_desc": "100 फोकस सत्र पूरे करें",
"achievement_honest_bronze_name": "ईमानदार ट्रैकर · कांस्य",
"achievement_honest_bronze_desc": "ईमानदारी से 50 विकर्षण रिकॉर्ड करें",
"achievement_honest_silver_name": "ईमानदार ट्रैकर · रजत",
"achievement_honest_silver_desc": "ईमानदारी से 200 विकर्षण रिकॉर्ड करें",
"achievement_honest_gold_name": "ईमानदार ट्रैकर · स्वर्ण",
"achievement_honest_gold_desc": "ईमानदारी से 500 विकर्षण रिकॉर्ड करें",
"achievement_marathon_name": "मैराथन धावक",
"achievement_marathon_desc": "10 घंटे का फोकस समय जमा करें",
"achievement_century_name": "सेंचुरी क्लब",
"achievement_century_desc": "100 घंटे का फोकस समय जमा करें",
"achievement_master_name": "फोकस ग्रैंडमास्टर",
"achievement_master_desc": "1000 घंटे का फोकस समय जमा करें",
"achievement_persistence_star_name": "दृढ़ता का सितारा",
"achievement_persistence_star_desc": "7 दिनों तक लगातार चेक-इन करें",
"achievement_monthly_habit_name": "मासिक आदत",
"achievement_monthly_habit_desc": "30 दिनों तक लगातार चेक-इन करें",
"achievement_centurion_name": "सेंचुरियन",
"achievement_centurion_desc": "100 दिनों तक लगातार चेक-इन करें",
"achievement_year_warrior_name": "वर्ष योद्धा",
"achievement_year_warrior_desc": "365 दिनों तक लगातार चेक-इन करें",
"total": "कुल",
"status": "स्थिति",
"pointsBreakdown": "अंकों का विवरण",
"focusTimePoints": "फोकस समय",
"focusTimePointsDesc": "फोकस के प्रति मिनट 1 अंक",
"honestyBonusLabel": "ईमानदारी बोनस",
"honestyBonusDesc": "विकर्षण रिकॉर्ड करने के लिए अतिरिक्त अंक",
"checkInPoints": "दैनिक चेक-इन",
"checkInPointsDesc": "दैनिक चेक-इन के लिए मूल अंक",
"streakBonus": "स्ट्रीक बोनस",
"streakBonusDesc": "{days} लगातार चेक-इन",
"achievementBonusLabel": "उपलब्धि बोनस",
"weekdayS": "र",
"weekdayM": "सो",
"weekdayT": "मं",
"weekdayW": "बु",
"weekdayTh": "गु",
"weekdayF": "शु",
"weekdaySa": "श"
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "Poin",
"level": "Level",
"checked": "Tercatat",
"checkIn": "Check-in",
"earnedPoints": "Diperoleh:",
"basePoints": "Poin Dasar",
"honestyBonus": "Bonus Kejujuran",
"totalPoints": "Total Poin: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} tercatat)",
"achievementUnlocked": "🎖️ Pencapaian Terbuka!",
"bonusPoints": "+{points} Poin ⚡",
"checkInSuccess": "Check-in berhasil! +{points} poin ⚡",
"weeklyStreakBonus": "🎉 Bonus streak mingguan!",
"newAchievementUnlocked": "🎖️ Pencapaian baru terbuka!",
"alreadyCheckedIn": "Anda sudah check-in hari ini! Kembali lagi besok 📅",
"checkInCalendar": "Kalender Check-In 📅",
"checkInToday": "📅 Check-in Hari Ini",
"checkedInToday": "✓ Sudah Check-in Hari Ini",
"currentStreak": "🔥 Streak Saat Ini",
"longestStreak": "🏆 Streak Terpanjang",
"days": "hari",
"daysCount": "{count} hari",
"achievements": "Pencapaian 🎖️",
"viewAllAchievements": "Lihat Semua Pencapaian",
"allAchievementsComingSoon": "Layar pencapaian lengkap segera hadir!",
"profile": "Profil",
"focuser": "Pemfokus",
"pointsToNextLevel": "{points} poin menuju Level {level}",
"achievement_first_session_name": "Pemula Fokus",
"achievement_first_session_desc": "Selesaikan sesi fokus pertama Anda",
"achievement_sessions_10_name": "Memulai",
"achievement_sessions_10_desc": "Selesaikan 10 sesi fokus",
"achievement_sessions_50_name": "Penggemar Fokus",
"achievement_sessions_50_desc": "Selesaikan 50 sesi fokus",
"achievement_sessions_100_name": "Master Fokus",
"achievement_sessions_100_desc": "Selesaikan 100 sesi fokus",
"achievement_honest_bronze_name": "Pelacak Jujur · Perunggu",
"achievement_honest_bronze_desc": "Catat 50 gangguan dengan jujur",
"achievement_honest_silver_name": "Pelacak Jujur · Perak",
"achievement_honest_silver_desc": "Catat 200 gangguan dengan jujur",
"achievement_honest_gold_name": "Pelacak Jujur · Emas",
"achievement_honest_gold_desc": "Catat 500 gangguan dengan jujur",
"achievement_marathon_name": "Pelari Maraton",
"achievement_marathon_desc": "Kumpulkan 10 jam waktu fokus",
"achievement_century_name": "Klub Abad",
"achievement_century_desc": "Kumpulkan 100 jam waktu fokus",
"achievement_master_name": "Grandmaster Fokus",
"achievement_master_desc": "Kumpulkan 1000 jam waktu fokus",
"achievement_persistence_star_name": "Bintang Kegigihan",
"achievement_persistence_star_desc": "Check-in selama 7 hari berturut-turut",
"achievement_monthly_habit_name": "Kebiasaan Bulanan",
"achievement_monthly_habit_desc": "Check-in selama 30 hari berturut-turut",
"achievement_centurion_name": "Centurion",
"achievement_centurion_desc": "Check-in selama 100 hari berturut-turut",
"achievement_year_warrior_name": "Pejuang Tahun",
"achievement_year_warrior_desc": "Check-in selama 365 hari berturut-turut",
"total": "Total",
"status": "Status",
"pointsBreakdown": "Rincian Poin",
"focusTimePoints": "Waktu Fokus",
"focusTimePointsDesc": "1 poin per menit fokus",
"honestyBonusLabel": "Bonus Kejujuran",
"honestyBonusDesc": "Poin tambahan untuk mencatat gangguan",
"checkInPoints": "Check-in Harian",
"checkInPointsDesc": "Poin dasar untuk check-in harian",
"streakBonus": "Bonus Streak",
"streakBonusDesc": "{days} check-in berturut-turut",
"achievementBonusLabel": "Bonus Pencapaian",
"weekdayS": "M",
"weekdayM": "S",
"weekdayT": "S",
"weekdayW": "R",
"weekdayTh": "K",
"weekdayF": "J",
"weekdaySa": "S"
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "Punti",
"level": "Livello",
"checked": "Registrato",
"checkIn": "Check-in",
"earnedPoints": "Guadagnato:",
"basePoints": "Punti Base",
"honestyBonus": "Bonus Onestà",
"totalPoints": "Punti Totali: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} registrate)",
"achievementUnlocked": "🎖️ Obiettivo Sbloccato!",
"bonusPoints": "+{points} Punti ⚡",
"checkInSuccess": "Check-in riuscito! +{points} punti ⚡",
"weeklyStreakBonus": "🎉 Bonus serie settimanale!",
"newAchievementUnlocked": "🎖️ Nuovo obiettivo sbloccato!",
"alreadyCheckedIn": "Hai già fatto il check-in oggi! Torna domani 📅",
"checkInCalendar": "Calendario Check-In 📅",
"checkInToday": "📅 Check-in Oggi",
"checkedInToday": "✓ Check-in Fatto Oggi",
"currentStreak": "🔥 Serie Attuale",
"longestStreak": "🏆 Serie Più Lunga",
"days": "giorni",
"daysCount": "{count} giorni",
"achievements": "Obiettivi 🎖️",
"viewAllAchievements": "Vedi Tutti gli Obiettivi",
"allAchievementsComingSoon": "Schermata completa degli obiettivi in arrivo!",
"profile": "Profilo",
"focuser": "Concentratore",
"pointsToNextLevel": "{points} punti al Livello {level}",
"achievement_first_session_name": "Principiante della Concentrazione",
"achievement_first_session_desc": "Completa la tua prima sessione di concentrazione",
"achievement_sessions_10_name": "Inizio",
"achievement_sessions_10_desc": "Completa 10 sessioni di concentrazione",
"achievement_sessions_50_name": "Appassionato di Concentrazione",
"achievement_sessions_50_desc": "Completa 50 sessioni di concentrazione",
"achievement_sessions_100_name": "Maestro della Concentrazione",
"achievement_sessions_100_desc": "Completa 100 sessioni di concentrazione",
"achievement_honest_bronze_name": "Tracker Onesto · Bronzo",
"achievement_honest_bronze_desc": "Registra onestamente 50 distrazioni",
"achievement_honest_silver_name": "Tracker Onesto · Argento",
"achievement_honest_silver_desc": "Registra onestamente 200 distrazioni",
"achievement_honest_gold_name": "Tracker Onesto · Oro",
"achievement_honest_gold_desc": "Registra onestamente 500 distrazioni",
"achievement_marathon_name": "Maratoneta",
"achievement_marathon_desc": "Accumula 10 ore di tempo di concentrazione",
"achievement_century_name": "Club del Secolo",
"achievement_century_desc": "Accumula 100 ore di tempo di concentrazione",
"achievement_master_name": "Gran Maestro della Concentrazione",
"achievement_master_desc": "Accumula 1000 ore di tempo di concentrazione",
"achievement_persistence_star_name": "Stella della Persistenza",
"achievement_persistence_star_desc": "Fai il check-in per 7 giorni consecutivi",
"achievement_monthly_habit_name": "Abitudine Mensile",
"achievement_monthly_habit_desc": "Fai il check-in per 30 giorni consecutivi",
"achievement_centurion_name": "Centurione",
"achievement_centurion_desc": "Fai il check-in per 100 giorni consecutivi",
"achievement_year_warrior_name": "Guerriero dell'Anno",
"achievement_year_warrior_desc": "Fai il check-in per 365 giorni consecutivi",
"total": "Totale",
"status": "Stato",
"pointsBreakdown": "Dettaglio Punti",
"focusTimePoints": "Tempo di Concentrazione",
"focusTimePointsDesc": "1 punto per minuto di concentrazione",
"honestyBonusLabel": "Bonus Onestà",
"honestyBonusDesc": "Punti extra per registrare distrazioni",
"checkInPoints": "Check-in Giornaliero",
"checkInPointsDesc": "Punti base per check-in giornaliero",
"streakBonus": "Bonus Serie",
"streakBonusDesc": "{days} check-in consecutivi",
"achievementBonusLabel": "Bonus Obiettivo",
"weekdayS": "D",
"weekdayM": "L",
"weekdayT": "M",
"weekdayW": "M",
"weekdayTh": "G",
"weekdayF": "V",
"weekdaySa": "S"
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "ポイント",
"level": "レベル",
"checked": "チェック済み",
"checkIn": "チェックイン",
"earnedPoints": "獲得:",
"basePoints": "基本ポイント",
"honestyBonus": "正直ボーナス",
"totalPoints": "合計ポイント:{count} ⚡",
"distractionsRecorded": "({count} {distractionText} 記録済み)",
"achievementUnlocked": "🎖️ 実績解除!",
"bonusPoints": "+{points} ポイント ⚡",
"checkInSuccess": "チェックイン成功!+{points} ポイント ⚡",
"weeklyStreakBonus": "🎉 1週間連続ボーナス",
"newAchievementUnlocked": "🎖️ 新しい実績解除!",
"alreadyCheckedIn": "今日は既にチェックイン済みです!明日また来てください 📅",
"checkInCalendar": "チェックインカレンダー 📅",
"checkInToday": "📅 今日チェックイン",
"checkedInToday": "✓ 今日チェックイン済み",
"currentStreak": "🔥 現在の連続",
"longestStreak": "🏆 最長連続",
"days": "日",
"daysCount": "{count} 日",
"achievements": "実績 🎖️",
"viewAllAchievements": "すべての実績を見る",
"allAchievementsComingSoon": "完全な実績画面は近日公開!",
"profile": "プロフィール",
"focuser": "集中する人",
"pointsToNextLevel": "レベル {level} まであと {points} ポイント",
"achievement_first_session_name": "集中初心者",
"achievement_first_session_desc": "最初の集中セッションを完了",
"achievement_sessions_10_name": "入門者",
"achievement_sessions_10_desc": "10回の集中セッションを完了",
"achievement_sessions_50_name": "集中愛好家",
"achievement_sessions_50_desc": "50回の集中セッションを完了",
"achievement_sessions_100_name": "集中マスター",
"achievement_sessions_100_desc": "100回の集中セッションを完了",
"achievement_honest_bronze_name": "正直な記録者・ブロンズ",
"achievement_honest_bronze_desc": "50回の気の散りを正直に記録",
"achievement_honest_silver_name": "正直な記録者・シルバー",
"achievement_honest_silver_desc": "200回の気の散りを正直に記録",
"achievement_honest_gold_name": "正直な記録者・ゴールド",
"achievement_honest_gold_desc": "500回の気の散りを正直に記録",
"achievement_marathon_name": "マラソンランナー",
"achievement_marathon_desc": "10時間の集中時間を累積",
"achievement_century_name": "センチュリークラブ",
"achievement_century_desc": "100時間の集中時間を累積",
"achievement_master_name": "集中グランドマスター",
"achievement_master_desc": "1000時間の集中時間を累積",
"achievement_persistence_star_name": "継続の星",
"achievement_persistence_star_desc": "7日間連続でチェックイン",
"achievement_monthly_habit_name": "月間習慣",
"achievement_monthly_habit_desc": "30日間連続でチェックイン",
"achievement_centurion_name": "百日戦士",
"achievement_centurion_desc": "100日間連続でチェックイン",
"achievement_year_warrior_name": "年間戦士",
"achievement_year_warrior_desc": "365日間連続でチェックイン",
"total": "合計",
"status": "ステータス",
"pointsBreakdown": "ポイント内訳",
"focusTimePoints": "集中時間",
"focusTimePointsDesc": "1分の集中につき1ポイント",
"honestyBonusLabel": "正直ボーナス",
"honestyBonusDesc": "気の散りを記録すると追加ポイント",
"checkInPoints": "毎日チェックイン",
"checkInPointsDesc": "毎日の初回チェックインで基本ポイント",
"streakBonus": "連続ボーナス",
"streakBonusDesc": "{days} 日連続チェックイン",
"achievementBonusLabel": "実績ボーナス",
"weekdayS": "日",
"weekdayM": "月",
"weekdayT": "火",
"weekdayW": "水",
"weekdayTh": "木",
"weekdayF": "金",
"weekdaySa": "土"
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "포인트",
"level": "레벨",
"checked": "체크 완료",
"checkIn": "체크인",
"earnedPoints": "획득:",
"basePoints": "기본 포인트",
"honestyBonus": "정직 보너스",
"totalPoints": "총 포인트: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} 기록됨)",
"achievementUnlocked": "🎖️ 업적 달성!",
"bonusPoints": "+{points} 포인트 ⚡",
"checkInSuccess": "체크인 성공! +{points} 포인트 ⚡",
"weeklyStreakBonus": "🎉 주간 연속 보너스!",
"newAchievementUnlocked": "🎖️ 새로운 업적 달성!",
"alreadyCheckedIn": "오늘 이미 체크인했어요! 내일 다시 오세요 📅",
"checkInCalendar": "체크인 캘린더 📅",
"checkInToday": "📅 오늘 체크인",
"checkedInToday": "✓ 오늘 체크인 완료",
"currentStreak": "🔥 현재 연속",
"longestStreak": "🏆 최장 연속",
"days": "일",
"daysCount": "{count} 일",
"achievements": "업적 🎖️",
"viewAllAchievements": "모든 업적 보기",
"allAchievementsComingSoon": "전체 업적 화면 곧 공개!",
"profile": "프로필",
"focuser": "집중하는 사람",
"pointsToNextLevel": "레벨 {level}까지 {points} 포인트 남음",
"achievement_first_session_name": "집중 초보자",
"achievement_first_session_desc": "첫 집중 세션 완료",
"achievement_sessions_10_name": "시작 단계",
"achievement_sessions_10_desc": "10회 집중 세션 완료",
"achievement_sessions_50_name": "집중 애호가",
"achievement_sessions_50_desc": "50회 집중 세션 완료",
"achievement_sessions_100_name": "집중 마스터",
"achievement_sessions_100_desc": "100회 집중 세션 완료",
"achievement_honest_bronze_name": "정직한 기록자 · 브론즈",
"achievement_honest_bronze_desc": "50회 산만함을 정직하게 기록",
"achievement_honest_silver_name": "정직한 기록자 · 실버",
"achievement_honest_silver_desc": "200회 산만함을 정직하게 기록",
"achievement_honest_gold_name": "정직한 기록자 · 골드",
"achievement_honest_gold_desc": "500회 산만함을 정직하게 기록",
"achievement_marathon_name": "마라톤 러너",
"achievement_marathon_desc": "누적 10시간 집중",
"achievement_century_name": "센추리 클럽",
"achievement_century_desc": "누적 100시간 집중",
"achievement_master_name": "집중 그랜드마스터",
"achievement_master_desc": "누적 1000시간 집중",
"achievement_persistence_star_name": "끈기의 별",
"achievement_persistence_star_desc": "7일 연속 체크인",
"achievement_monthly_habit_name": "월간 습관",
"achievement_monthly_habit_desc": "30일 연속 체크인",
"achievement_centurion_name": "백일 전사",
"achievement_centurion_desc": "100일 연속 체크인",
"achievement_year_warrior_name": "연간 전사",
"achievement_year_warrior_desc": "365일 연속 체크인",
"total": "합계",
"status": "상태",
"pointsBreakdown": "포인트 세부 내역",
"focusTimePoints": "집중 시간",
"focusTimePointsDesc": "1분 집중당 1포인트",
"honestyBonusLabel": "정직 보너스",
"honestyBonusDesc": "산만함 기록 시 추가 포인트",
"checkInPoints": "일일 체크인",
"checkInPointsDesc": "매일 첫 체크인 시 기본 포인트",
"streakBonus": "연속 보너스",
"streakBonusDesc": "{days}일 연속 체크인",
"achievementBonusLabel": "업적 보너스",
"weekdayS": "일",
"weekdayM": "월",
"weekdayT": "화",
"weekdayW": "수",
"weekdayTh": "목",
"weekdayF": "금",
"weekdaySa": "토"
}

View File

@@ -992,6 +992,120 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'Check in for 365 consecutive days'**
String get achievement_year_warrior_desc;
/// Total label (e.g., total time)
///
/// In en, this message translates to:
/// **'Total'**
String get total;
/// Status label
///
/// In en, this message translates to:
/// **'Status'**
String get status;
/// Points breakdown section title
///
/// In en, this message translates to:
/// **'Points Breakdown'**
String get pointsBreakdown;
/// Points from focus time label
///
/// In en, this message translates to:
/// **'Focus Time'**
String get focusTimePoints;
/// Focus time points description
///
/// In en, this message translates to:
/// **'1 point per minute of focus'**
String get focusTimePointsDesc;
/// Honesty bonus label in breakdown
///
/// In en, this message translates to:
/// **'Honesty Bonus'**
String get honestyBonusLabel;
/// Honesty bonus description
///
/// In en, this message translates to:
/// **'Extra points for recording distractions'**
String get honestyBonusDesc;
/// Daily check-in points label
///
/// In en, this message translates to:
/// **'Daily Check-In'**
String get checkInPoints;
/// Daily check-in points description
///
/// In en, this message translates to:
/// **'Base points for daily check-in'**
String get checkInPointsDesc;
/// Streak bonus label
///
/// In en, this message translates to:
/// **'Streak Bonus'**
String get streakBonus;
/// Streak bonus description
///
/// In en, this message translates to:
/// **'{days} consecutive check-ins'**
String streakBonusDesc(int days);
/// Achievement bonus points label
///
/// In en, this message translates to:
/// **'Achievement Bonus'**
String get achievementBonusLabel;
/// Sunday abbreviation
///
/// In en, this message translates to:
/// **'S'**
String get weekdayS;
/// Monday abbreviation
///
/// In en, this message translates to:
/// **'M'**
String get weekdayM;
/// Tuesday abbreviation
///
/// In en, this message translates to:
/// **'T'**
String get weekdayT;
/// Wednesday abbreviation
///
/// In en, this message translates to:
/// **'W'**
String get weekdayW;
/// Thursday abbreviation
///
/// In en, this message translates to:
/// **'T'**
String get weekdayTh;
/// Friday abbreviation
///
/// In en, this message translates to:
/// **'F'**
String get weekdayF;
/// Saturday abbreviation
///
/// In en, this message translates to:
/// **'S'**
String get weekdaySa;
}
class _AppLocalizationsDelegate

View File

@@ -335,190 +335,244 @@ class AppLocalizationsAr extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => 'النقاط';
@override
String get level => 'Level';
String get level => 'المستوى';
@override
String get checked => 'Checked';
String get checked => 'تم التسجيل';
@override
String get checkIn => 'Check In';
String get checkIn => 'تسجيل الحضور';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => 'المكتسب:';
@override
String get basePoints => 'Base Points';
String get basePoints => 'النقاط الأساسية';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => 'مكافأة الصدق';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return 'إجمالي النقاط: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText مسجلة)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ إنجاز مفتوح!';
@override
String bonusPoints(int points) {
return '+$points Points';
return '+$points نقاط';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points';
return 'تسجيل الحضور ناجح! +$points نقاط';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 مكافأة السلسلة الأسبوعية!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ إنجاز جديد مفتوح!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
String get alreadyCheckedIn => 'لقد سجلت حضورك اليوم بالفعل! عد غدًا 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'تقويم تسجيل الحضور 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 سجل الحضور اليوم';
@override
String get checkedInToday => 'Checked In Today';
String get checkedInToday => 'تم التسجيل اليوم';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 السلسلة الحالية';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 أطول سلسلة';
@override
String get days => 'days';
String get days => 'أيام';
@override
String daysCount(int count) {
return '$count days';
return '$count أيام';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => 'الإنجازات 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'عرض جميع الإنجازات';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
String get allAchievementsComingSoon => 'شاشة الإنجازات الكاملة قريبًا!';
@override
String get profile => 'Profile';
String get profile => 'الملف الشخصي';
@override
String get focuser => 'Focuser';
String get focuser => 'المركز';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return '$points نقاط إلى المستوى $level';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => 'مبتدئ التركيز';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
String get achievement_first_session_desc => 'أكمل جلسة التركيز الأولى';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => 'البداية';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc => 'أكمل 10 جلسات تركيز';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => 'عاشق التركيز';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc => 'أكمل 50 جلسة تركيز';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => 'سيد التركيز';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc => 'أكمل 100 جلسة تركيز';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => 'المتتبع الصادق · برونزي';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
String get achievement_honest_bronze_desc => 'سجل 50 تشتتًا بصدق';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => 'المتتبع الصادق · فضي';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
String get achievement_honest_silver_desc => 'سجل 200 تشتت بصدق';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => 'المتتبع الصادق · ذهبي';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc => 'سجل 500 تشتت بصدق';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'عداء الماراثون';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc => 'اجمع 10 ساعات من وقت التركيز';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'نادي القرن';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc => 'اجمع 100 ساعة من وقت التركيز';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => 'جراند ماستر التركيز';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc => 'اجمع 1000 ساعة من وقت التركيز';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => 'نجمة المثابرة';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
'سجل الحضور لمدة 7 أيام متتالية';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => 'العادة الشهرية';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
'سجل الحضور لمدة 30 يومًا متتاليًا';
@override
String get achievement_centurion_name => 'Centurion';
String get achievement_centurion_name => 'المئوي';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc => 'سجل الحضور لمدة 100 يوم متتالٍ';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => 'محارب العام';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
'سجل الحضور لمدة 365 يومًا متتاليًا';
@override
String get total => 'الإجمالي';
@override
String get status => 'الحالة';
@override
String get pointsBreakdown => 'تفصيل النقاط';
@override
String get focusTimePoints => 'وقت التركيز';
@override
String get focusTimePointsDesc => 'نقطة واحدة لكل دقيقة تركيز';
@override
String get honestyBonusLabel => 'مكافأة الصدق';
@override
String get honestyBonusDesc => 'نقاط إضافية لتسجيل التشتتات';
@override
String get checkInPoints => 'تسجيل الحضور اليومي';
@override
String get checkInPointsDesc => 'النقاط الأساسية لتسجيل الحضور اليومي';
@override
String get streakBonus => 'مكافأة السلسلة';
@override
String streakBonusDesc(int days) {
return '$days تسجيلات حضور متتالية';
}
@override
String get achievementBonusLabel => 'مكافأة الإنجاز';
@override
String get weekdayS => 'ح';
@override
String get weekdayM => 'ن';
@override
String get weekdayT => 'ث';
@override
String get weekdayW => 'ر';
@override
String get weekdayTh => 'خ';
@override
String get weekdayF => 'ج';
@override
String get weekdaySa => 'س';
}

View File

@@ -338,190 +338,248 @@ class AppLocalizationsDe extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => 'Punkte';
@override
String get level => 'Level';
@override
String get checked => 'Checked';
String get checked => 'Geprüft';
@override
String get checkIn => 'Check In';
String get checkIn => 'Einchecken';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => 'Verdient:';
@override
String get basePoints => 'Base Points';
String get basePoints => 'Basispunkte';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => 'Ehrlichkeitsbonus';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return 'Gesamt Punkte: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText aufgezeichnet)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ Erfolg freigeschaltet!';
@override
String bonusPoints(int points) {
return '+$points Points';
return '+$points Punkte';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points';
return 'Check-in erfolgreich! +$points Punkte';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 Wöchentlicher Streak-Bonus!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ Neuer Erfolg freigeschaltet!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
'Du hast heute bereits eingecheckt! Komm morgen wieder 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'Check-in-Kalender 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 Heute einchecken';
@override
String get checkedInToday => 'Checked In Today';
String get checkedInToday => 'Heute eingecheckt';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 Aktueller Streak';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 Längster Streak';
@override
String get days => 'days';
String get days => 'Tage';
@override
String daysCount(int count) {
return '$count days';
return '$count Tage';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => 'Erfolge 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'Alle Erfolge anzeigen';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
'Vollständiger Erfolge-Bildschirm kommt bald!';
@override
String get profile => 'Profile';
String get profile => 'Profil';
@override
String get focuser => 'Focuser';
String get focuser => 'Fokussierer';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return '$points Punkte bis Level $level';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => 'Fokus-Neuling';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
'Schließe deine erste Fokussitzung ab';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => 'Erste Schritte';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc => 'Schließe 10 Fokussitzungen ab';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => 'Fokus-Enthusiast';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc => 'Schließe 50 Fokussitzungen ab';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => 'Fokus-Meister';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc => 'Schließe 100 Fokussitzungen ab';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => 'Ehrlicher Tracker · Bronze';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
'Zeichne 50 Ablenkungen ehrlich auf';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => 'Ehrlicher Tracker · Silber';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
'Zeichne 200 Ablenkungen ehrlich auf';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => 'Ehrlicher Tracker · Gold';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc =>
'Zeichne 500 Ablenkungen ehrlich auf';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'Marathon-Läufer';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc => 'Sammle 10 Stunden Fokuszeit';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'Jahrhundert-Club';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc => 'Sammle 100 Stunden Fokuszeit';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => 'Fokus-Großmeister';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc => 'Sammle 1000 Stunden Fokuszeit';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => 'Beharrlichkeitsstern';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
String get achievement_persistence_star_desc => 'Checke 7 Tage in Folge ein';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => 'Monatliche Gewohnheit';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
String get achievement_monthly_habit_desc => 'Checke 30 Tage in Folge ein';
@override
String get achievement_centurion_name => 'Centurion';
String get achievement_centurion_name => 'Zenturio';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc => 'Checke 100 Tage in Folge ein';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => 'Jahreskrieger';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
String get achievement_year_warrior_desc => 'Checke 365 Tage in Folge ein';
@override
String get total => 'Gesamt';
@override
String get status => 'Status';
@override
String get pointsBreakdown => 'Punkteaufschlüsselung';
@override
String get focusTimePoints => 'Fokuszeit';
@override
String get focusTimePointsDesc => '1 Punkt pro Minute Fokus';
@override
String get honestyBonusLabel => 'Ehrlichkeitsbonus';
@override
String get honestyBonusDesc =>
'Extrapunkte für das Aufzeichnen von Ablenkungen';
@override
String get checkInPoints => 'Täglicher Check-in';
@override
String get checkInPointsDesc => 'Basispunkte für täglichen Check-in';
@override
String get streakBonus => 'Streak-Bonus';
@override
String streakBonusDesc(int days) {
return '$days aufeinanderfolgende Check-ins';
}
@override
String get achievementBonusLabel => 'Erfolgsbonus';
@override
String get weekdayS => 'S';
@override
String get weekdayM => 'M';
@override
String get weekdayT => 'D';
@override
String get weekdayW => 'M';
@override
String get weekdayTh => 'D';
@override
String get weekdayF => 'F';
@override
String get weekdaySa => 'S';
}

View File

@@ -522,4 +522,63 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
@override
String get total => 'Total';
@override
String get status => 'Status';
@override
String get pointsBreakdown => 'Points Breakdown';
@override
String get focusTimePoints => 'Focus Time';
@override
String get focusTimePointsDesc => '1 point per minute of focus';
@override
String get honestyBonusLabel => 'Honesty Bonus';
@override
String get honestyBonusDesc => 'Extra points for recording distractions';
@override
String get checkInPoints => 'Daily Check-In';
@override
String get checkInPointsDesc => 'Base points for daily check-in';
@override
String get streakBonus => 'Streak Bonus';
@override
String streakBonusDesc(int days) {
return '$days consecutive check-ins';
}
@override
String get achievementBonusLabel => 'Achievement Bonus';
@override
String get weekdayS => 'S';
@override
String get weekdayM => 'M';
@override
String get weekdayT => 'T';
@override
String get weekdayW => 'W';
@override
String get weekdayTh => 'T';
@override
String get weekdayF => 'F';
@override
String get weekdaySa => 'S';
}

View File

@@ -339,190 +339,254 @@ class AppLocalizationsEs extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => 'Puntos';
@override
String get level => 'Level';
String get level => 'Nivel';
@override
String get checked => 'Checked';
String get checked => 'Registrado';
@override
String get checkIn => 'Check In';
String get checkIn => 'Registrarse';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => 'Ganado:';
@override
String get basePoints => 'Base Points';
String get basePoints => 'Puntos Base';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => 'Bono de Honestidad';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return 'Puntos Totales: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText registradas)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ ¡Logro Desbloqueado!';
@override
String bonusPoints(int points) {
return '+$points Points ⚡';
return '+$points Puntos ⚡';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points ⚡';
return '¡Registro exitoso! +$points puntos ⚡';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 ¡Bono de racha semanal!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ ¡Nuevo logro desbloqueado!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
String get alreadyCheckedIn => '¡Ya te registraste hoy! Vuelve mañana 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'Calendario de Registro 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 Registrarse Hoy';
@override
String get checkedInToday => 'Checked In Today';
String get checkedInToday => 'Registrado Hoy';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 Racha Actual';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 Racha Más Larga';
@override
String get days => 'days';
String get days => 'días';
@override
String daysCount(int count) {
return '$count days';
return '$count días';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => 'Logros 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'Ver Todos los Logros';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
'¡Pantalla completa de logros próximamente!';
@override
String get profile => 'Profile';
String get profile => 'Perfil';
@override
String get focuser => 'Focuser';
String get focuser => 'Enfocador';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return '$points puntos para Nivel $level';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => 'Novato del Enfoque';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
'Completa tu primera sesión de enfoque';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => 'Comenzando';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc => 'Completa 10 sesiones de enfoque';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => 'Entusiasta del Enfoque';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc => 'Completa 50 sesiones de enfoque';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => 'Maestro del Enfoque';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc =>
'Completa 100 sesiones de enfoque';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => 'Registrador Honesto · Bronce';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
'Registra 50 distracciones honestamente';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => 'Registrador Honesto · Plata';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
'Registra 200 distracciones honestamente';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => 'Registrador Honesto · Oro';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc =>
'Registra 500 distracciones honestamente';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'Corredor de Maratón';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc =>
'Acumula 10 horas de tiempo de enfoque';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'Club del Siglo';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc =>
'Acumula 100 horas de tiempo de enfoque';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => 'Gran Maestro del Enfoque';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc =>
'Acumula 1000 horas de tiempo de enfoque';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => 'Estrella de Persistencia';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
'Regístrate durante 7 días consecutivos';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => 'Hábito Mensual';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
'Regístrate durante 30 días consecutivos';
@override
String get achievement_centurion_name => 'Centurion';
String get achievement_centurion_name => 'Centurión';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc =>
'Regístrate durante 100 días consecutivos';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => 'Guerrero del Año';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
'Regístrate durante 365 días consecutivos';
@override
String get total => 'Total';
@override
String get status => 'Estado';
@override
String get pointsBreakdown => 'Desglose de Puntos';
@override
String get focusTimePoints => 'Tiempo de Enfoque';
@override
String get focusTimePointsDesc => '1 punto por minuto de enfoque';
@override
String get honestyBonusLabel => 'Bono de Honestidad';
@override
String get honestyBonusDesc => 'Puntos extra por registrar distracciones';
@override
String get checkInPoints => 'Registro Diario';
@override
String get checkInPointsDesc => 'Puntos base por primer registro del día';
@override
String get streakBonus => 'Bono de Racha';
@override
String streakBonusDesc(int days) {
return '$days registros consecutivos';
}
@override
String get achievementBonusLabel => 'Bono de Logro';
@override
String get weekdayS => 'D';
@override
String get weekdayM => 'L';
@override
String get weekdayT => 'M';
@override
String get weekdayW => 'X';
@override
String get weekdayTh => 'J';
@override
String get weekdayF => 'V';
@override
String get weekdaySa => 'S';
}

View File

@@ -342,35 +342,35 @@ class AppLocalizationsFr extends AppLocalizations {
String get points => 'Points';
@override
String get level => 'Level';
String get level => 'Niveau';
@override
String get checked => 'Checked';
String get checked => 'Vérifié';
@override
String get checkIn => 'Check In';
String get checkIn => 'S\'enregistrer';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => 'Gagné:';
@override
String get basePoints => 'Base Points';
String get basePoints => 'Points de base';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => 'Bonus d\'honnêteté';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return 'Total des points: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText enregistrées)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ Succès débloqué!';
@override
String bonusPoints(int points) {
@@ -379,150 +379,219 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points ⚡';
return 'Enregistrement réussi! +$points points ⚡';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 Bonus de série hebdomadaire!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ Nouveau succès débloqué!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
'Vous vous êtes déjà enregistré aujourd\'hui! Revenez demain 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'Calendrier d\'enregistrement 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 S\'enregistrer aujourd\'hui';
@override
String get checkedInToday => 'Checked In Today';
String get checkedInToday => 'Enregistré aujourd\'hui';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 Série actuelle';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 Plus longue série';
@override
String get days => 'days';
String get days => 'jours';
@override
String daysCount(int count) {
return '$count days';
return '$count jours';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => 'Succès 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'Voir tous les succès';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
'Écran complet des succès bientôt disponible!';
@override
String get profile => 'Profile';
String get profile => 'Profil';
@override
String get focuser => 'Focuser';
String get focuser => 'Concentrateur';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return '$points points jusqu\'au niveau $level';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => 'Débutant en concentration';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
'Complétez votre première session de concentration';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => 'Premiers pas';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc =>
'Complétez 10 sessions de concentration';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => 'Passionné de concentration';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc =>
'Complétez 50 sessions de concentration';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => 'Maître de la concentration';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc =>
'Complétez 100 sessions de concentration';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => 'Tracker honnête · Bronze';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
'Enregistrez 50 distractions honnêtement';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => 'Tracker honnête · Argent';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
'Enregistrez 200 distractions honnêtement';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => 'Tracker honnête · Or';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc =>
'Enregistrez 500 distractions honnêtement';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'Coureur de marathon';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc =>
'Accumulez 10 heures de temps de concentration';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'Club du siècle';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc =>
'Accumulez 100 heures de temps de concentration';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => 'Grand maître de la concentration';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc =>
'Accumulez 1000 heures de temps de concentration';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => 'Étoile de la persévérance';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
'Enregistrez-vous pendant 7 jours consécutifs';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => 'Habitude mensuelle';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
'Enregistrez-vous pendant 30 jours consécutifs';
@override
String get achievement_centurion_name => 'Centurion';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc =>
'Enregistrez-vous pendant 100 jours consécutifs';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => 'Guerrier de l\'année';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
'Enregistrez-vous pendant 365 jours consécutifs';
@override
String get total => 'Total';
@override
String get status => 'Statut';
@override
String get pointsBreakdown => 'Répartition des points';
@override
String get focusTimePoints => 'Temps de concentration';
@override
String get focusTimePointsDesc => '1 point par minute de concentration';
@override
String get honestyBonusLabel => 'Bonus d\'honnêteté';
@override
String get honestyBonusDesc =>
'Points supplémentaires pour l\'enregistrement des distractions';
@override
String get checkInPoints => 'Enregistrement quotidien';
@override
String get checkInPointsDesc =>
'Points de base pour l\'enregistrement quotidien';
@override
String get streakBonus => 'Bonus de série';
@override
String streakBonusDesc(int days) {
return '$days enregistrements consécutifs';
}
@override
String get achievementBonusLabel => 'Bonus de succès';
@override
String get weekdayS => 'D';
@override
String get weekdayM => 'L';
@override
String get weekdayT => 'M';
@override
String get weekdayW => 'M';
@override
String get weekdayTh => 'J';
@override
String get weekdayF => 'V';
@override
String get weekdaySa => 'S';
}

View File

@@ -338,190 +338,247 @@ class AppLocalizationsHi extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => 'अंक';
@override
String get level => 'Level';
String get level => 'स्तर';
@override
String get checked => 'Checked';
String get checked => 'चेक किया';
@override
String get checkIn => 'Check In';
String get checkIn => 'चेक-इन';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => 'अर्जित:';
@override
String get basePoints => 'Base Points';
String get basePoints => 'मूल अंक';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => 'ईमानदारी बोनस';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return 'कुल अंक: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText रिकॉर्ड किया)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ उपलब्धि अनलॉक!';
@override
String bonusPoints(int points) {
return '+$points Points';
return '+$points अंक';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points';
return 'चेक-इन सफल! +$points अंक';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 साप्ताहिक स्ट्रीक बोनस!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ नई उपलब्धि अनलॉक!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
'आप आज पहले ही चेक-इन कर चुके हैं! कल वापस आएं 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'चेक-इन कैलेंडर 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 आज चेक-इन करें';
@override
String get checkedInToday => 'Checked In Today';
String get checkedInToday => 'आज चेक-इन हो गया';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 वर्तमान स्ट्रीक';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 सबसे लंबी स्ट्रीक';
@override
String get days => 'days';
String get days => 'दिन';
@override
String daysCount(int count) {
return '$count days';
return '$count दिन';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => 'उपलब्धियाँ 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'सभी उपलब्धियाँ देखें';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
'पूर्ण उपलब्धि स्क्रीन जल्द आ रही है!';
@override
String get profile => 'Profile';
String get profile => 'प्रोफ़ाइल';
@override
String get focuser => 'Focuser';
String get focuser => 'फोकस करने वाला';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return 'स्तर $level के लिए $points अंक';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => 'फोकस नौसिखिया';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
String get achievement_first_session_desc => 'अपना पहला फोकस सत्र पूरा करें';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => 'शुरुआत';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc => '10 फोकस सत्र पूरे करें';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => 'फोकस उत्साही';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc => '50 फोकस सत्र पूरे करें';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => 'फोकस मास्टर';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc => '100 फोकस सत्र पूरे करें';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => 'ईमानदार ट्रैकर · कांस्य';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
'ईमानदारी से 50 विकर्षण रिकॉर्ड करें';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => 'ईमानदार ट्रैकर · रजत';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
'ईमानदारी से 200 विकर्षण रिकॉर्ड करें';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => 'ईमानदार ट्रैकर · स्वर्ण';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc =>
'ईमानदारी से 500 विकर्षण रिकॉर्ड करें';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'मैराथन धावक';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc => '10 घंटे का फोकस समय जमा करें';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'सेंचुरी क्लब';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc => '100 घंटे का फोकस समय जमा करें';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => 'फोकस ग्रैंडमास्टर';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc => '1000 घंटे का फोकस समय जमा करें';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => 'दृढ़ता का सितारा';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
'7 दिनों तक लगातार चेक-इन करें';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => 'मासिक आदत';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
String get achievement_monthly_habit_desc => '30 दिनों तक लगातार चेक-इन करें';
@override
String get achievement_centurion_name => 'Centurion';
String get achievement_centurion_name => 'सेंचुरियन';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc => '100 दिनों तक लगातार चेक-इन करें';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => 'वर्ष योद्धा';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
String get achievement_year_warrior_desc => '365 दिनों तक लगातार चेक-इन करें';
@override
String get total => 'कुल';
@override
String get status => 'स्थिति';
@override
String get pointsBreakdown => 'अंकों का विवरण';
@override
String get focusTimePoints => 'फोकस समय';
@override
String get focusTimePointsDesc => 'फोकस के प्रति मिनट 1 अंक';
@override
String get honestyBonusLabel => 'ईमानदारी बोनस';
@override
String get honestyBonusDesc => 'विकर्षण रिकॉर्ड करने के लिए अतिरिक्त अंक';
@override
String get checkInPoints => 'दैनिक चेक-इन';
@override
String get checkInPointsDesc => 'दैनिक चेक-इन के लिए मूल अंक';
@override
String get streakBonus => 'स्ट्रीक बोनस';
@override
String streakBonusDesc(int days) {
return '$days लगातार चेक-इन';
}
@override
String get achievementBonusLabel => 'उपलब्धि बोनस';
@override
String get weekdayS => '';
@override
String get weekdayM => 'सो';
@override
String get weekdayT => 'मं';
@override
String get weekdayW => 'बु';
@override
String get weekdayTh => 'गु';
@override
String get weekdayF => 'शु';
@override
String get weekdaySa => '';
}

View File

@@ -338,190 +338,249 @@ class AppLocalizationsId extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => 'Poin';
@override
String get level => 'Level';
@override
String get checked => 'Checked';
String get checked => 'Tercatat';
@override
String get checkIn => 'Check In';
String get checkIn => 'Check-in';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => 'Diperoleh:';
@override
String get basePoints => 'Base Points';
String get basePoints => 'Poin Dasar';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => 'Bonus Kejujuran';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return 'Total Poin: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText tercatat)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ Pencapaian Terbuka!';
@override
String bonusPoints(int points) {
return '+$points Points';
return '+$points Poin ⚡';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points';
return 'Check-in berhasil! +$points poin ⚡';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 Bonus streak mingguan!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ Pencapaian baru terbuka!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
'Anda sudah check-in hari ini! Kembali lagi besok 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'Kalender Check-In 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 Check-in Hari Ini';
@override
String get checkedInToday => 'Checked In Today';
String get checkedInToday => 'Sudah Check-in Hari Ini';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 Streak Saat Ini';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 Streak Terpanjang';
@override
String get days => 'days';
String get days => 'hari';
@override
String daysCount(int count) {
return '$count days';
return '$count hari';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => 'Pencapaian 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'Lihat Semua Pencapaian';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
'Layar pencapaian lengkap segera hadir!';
@override
String get profile => 'Profile';
String get profile => 'Profil';
@override
String get focuser => 'Focuser';
String get focuser => 'Pemfokus';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return '$points poin menuju Level $level';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => 'Pemula Fokus';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
'Selesaikan sesi fokus pertama Anda';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => 'Memulai';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc => 'Selesaikan 10 sesi fokus';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => 'Penggemar Fokus';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc => 'Selesaikan 50 sesi fokus';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => 'Master Fokus';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc => 'Selesaikan 100 sesi fokus';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => 'Pelacak Jujur · Perunggu';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
String get achievement_honest_bronze_desc => 'Catat 50 gangguan dengan jujur';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => 'Pelacak Jujur · Perak';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
'Catat 200 gangguan dengan jujur';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => 'Pelacak Jujur · Emas';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc => 'Catat 500 gangguan dengan jujur';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'Pelari Maraton';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc => 'Kumpulkan 10 jam waktu fokus';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'Klub Abad';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc => 'Kumpulkan 100 jam waktu fokus';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => 'Grandmaster Fokus';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc => 'Kumpulkan 1000 jam waktu fokus';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => 'Bintang Kegigihan';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
'Check-in selama 7 hari berturut-turut';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => 'Kebiasaan Bulanan';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
'Check-in selama 30 hari berturut-turut';
@override
String get achievement_centurion_name => 'Centurion';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc =>
'Check-in selama 100 hari berturut-turut';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => 'Pejuang Tahun';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
'Check-in selama 365 hari berturut-turut';
@override
String get total => 'Total';
@override
String get status => 'Status';
@override
String get pointsBreakdown => 'Rincian Poin';
@override
String get focusTimePoints => 'Waktu Fokus';
@override
String get focusTimePointsDesc => '1 poin per menit fokus';
@override
String get honestyBonusLabel => 'Bonus Kejujuran';
@override
String get honestyBonusDesc => 'Poin tambahan untuk mencatat gangguan';
@override
String get checkInPoints => 'Check-in Harian';
@override
String get checkInPointsDesc => 'Poin dasar untuk check-in harian';
@override
String get streakBonus => 'Bonus Streak';
@override
String streakBonusDesc(int days) {
return '$days check-in berturut-turut';
}
@override
String get achievementBonusLabel => 'Bonus Pencapaian';
@override
String get weekdayS => 'M';
@override
String get weekdayM => 'S';
@override
String get weekdayT => 'S';
@override
String get weekdayW => 'R';
@override
String get weekdayTh => 'K';
@override
String get weekdayF => 'J';
@override
String get weekdaySa => 'S';
}

View File

@@ -340,190 +340,258 @@ class AppLocalizationsIt extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => 'Punti';
@override
String get level => 'Level';
String get level => 'Livello';
@override
String get checked => 'Checked';
String get checked => 'Registrato';
@override
String get checkIn => 'Check In';
String get checkIn => 'Check-in';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => 'Guadagnato:';
@override
String get basePoints => 'Base Points';
String get basePoints => 'Punti Base';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => 'Bonus Onestà';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return 'Punti Totali: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText registrate)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ Obiettivo Sbloccato!';
@override
String bonusPoints(int points) {
return '+$points Points';
return '+$points Punti';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points';
return 'Check-in riuscito! +$points punti';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 Bonus serie settimanale!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ Nuovo obiettivo sbloccato!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
'Hai già fatto il check-in oggi! Torna domani 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'Calendario Check-In 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 Check-in Oggi';
@override
String get checkedInToday => '✓ Checked In Today';
String get checkedInToday => '✓ Check-in Fatto Oggi';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 Serie Attuale';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 Serie Più Lunga';
@override
String get days => 'days';
String get days => 'giorni';
@override
String daysCount(int count) {
return '$count days';
return '$count giorni';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => 'Obiettivi 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'Vedi Tutti gli Obiettivi';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
'Schermata completa degli obiettivi in arrivo!';
@override
String get profile => 'Profile';
String get profile => 'Profilo';
@override
String get focuser => 'Focuser';
String get focuser => 'Concentratore';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return '$points punti al Livello $level';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name =>
'Principiante della Concentrazione';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
'Completa la tua prima sessione di concentrazione';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => 'Inizio';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc =>
'Completa 10 sessioni di concentrazione';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => 'Appassionato di Concentrazione';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc =>
'Completa 50 sessioni di concentrazione';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => 'Maestro della Concentrazione';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc =>
'Completa 100 sessioni di concentrazione';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => 'Tracker Onesto · Bronzo';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
'Registra onestamente 50 distrazioni';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => 'Tracker Onesto · Argento';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
'Registra onestamente 200 distrazioni';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => 'Tracker Onesto · Oro';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc =>
'Registra onestamente 500 distrazioni';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'Maratoneta';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc =>
'Accumula 10 ore di tempo di concentrazione';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'Club del Secolo';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc =>
'Accumula 100 ore di tempo di concentrazione';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => 'Gran Maestro della Concentrazione';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc =>
'Accumula 1000 ore di tempo di concentrazione';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => 'Stella della Persistenza';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
'Fai il check-in per 7 giorni consecutivi';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => 'Abitudine Mensile';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
'Fai il check-in per 30 giorni consecutivi';
@override
String get achievement_centurion_name => 'Centurion';
String get achievement_centurion_name => 'Centurione';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc =>
'Fai il check-in per 100 giorni consecutivi';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => 'Guerriero dell\'Anno';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
'Fai il check-in per 365 giorni consecutivi';
@override
String get total => 'Totale';
@override
String get status => 'Stato';
@override
String get pointsBreakdown => 'Dettaglio Punti';
@override
String get focusTimePoints => 'Tempo di Concentrazione';
@override
String get focusTimePointsDesc => '1 punto per minuto di concentrazione';
@override
String get honestyBonusLabel => 'Bonus Onestà';
@override
String get honestyBonusDesc => 'Punti extra per registrare distrazioni';
@override
String get checkInPoints => 'Check-in Giornaliero';
@override
String get checkInPointsDesc => 'Punti base per check-in giornaliero';
@override
String get streakBonus => 'Bonus Serie';
@override
String streakBonusDesc(int days) {
return '$days check-in consecutivi';
}
@override
String get achievementBonusLabel => 'Bonus Obiettivo';
@override
String get weekdayS => 'D';
@override
String get weekdayM => 'L';
@override
String get weekdayT => 'M';
@override
String get weekdayW => 'M';
@override
String get weekdayTh => 'G';
@override
String get weekdayF => 'V';
@override
String get weekdaySa => 'S';
}

View File

@@ -331,190 +331,241 @@ class AppLocalizationsJa extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => 'ポイント';
@override
String get level => 'Level';
String get level => 'レベル';
@override
String get checked => 'Checked';
String get checked => 'チェック済み';
@override
String get checkIn => 'Check In';
String get checkIn => 'チェックイン';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => '獲得:';
@override
String get basePoints => 'Base Points';
String get basePoints => '基本ポイント';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => '正直ボーナス';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return '合計ポイント:$count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText 記録済み)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ 実績解除!';
@override
String bonusPoints(int points) {
return '+$points Points';
return '+$points ポイント';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points';
return 'チェックイン成功!+$points ポイント';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 1週間連続ボーナス';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ 新しい実績解除!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
String get alreadyCheckedIn => '今日は既にチェックイン済みです!明日また来てください 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'チェックインカレンダー 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 今日チェックイン';
@override
String get checkedInToday => 'Checked In Today';
String get checkedInToday => '今日チェックイン済み';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 現在の連続';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 最長連続';
@override
String get days => 'days';
String get days => '';
@override
String daysCount(int count) {
return '$count days';
return '$count ';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => '実績 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'すべての実績を見る';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
String get allAchievementsComingSoon => '完全な実績画面は近日公開!';
@override
String get profile => 'Profile';
String get profile => 'プロフィール';
@override
String get focuser => 'Focuser';
String get focuser => '集中する人';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return 'レベル $level まであと $points ポイント';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => '集中初心者';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
String get achievement_first_session_desc => '最初の集中セッションを完了';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => '入門者';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc => '10回の集中セッションを完了';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => '集中愛好家';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc => '50回の集中セッションを完了';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => '集中マスター';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc => '100回の集中セッションを完了';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => '正直な記録者・ブロンズ';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
String get achievement_honest_bronze_desc => '50回の気の散りを正直に記録';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => '正直な記録者・シルバー';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
String get achievement_honest_silver_desc => '200回の気の散りを正直に記録';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => '正直な記録者・ゴールド';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc => '500回の気の散りを正直に記録';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'マラソンランナー';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc => '10時間の集中時間を累積';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'センチュリークラブ';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc => '100時間の集中時間を累積';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => '集中グランドマスター';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc => '1000時間の集中時間を累積';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => '継続の星';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
String get achievement_persistence_star_desc => '7日間連続でチェックイン';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => '月間習慣';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
String get achievement_monthly_habit_desc => '30日間連続でチェックイン';
@override
String get achievement_centurion_name => 'Centurion';
String get achievement_centurion_name => '百日戦士';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc => '100日間連続でチェックイン';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => '年間戦士';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
String get achievement_year_warrior_desc => '365日間連続でチェックイン';
@override
String get total => '合計';
@override
String get status => 'ステータス';
@override
String get pointsBreakdown => 'ポイント内訳';
@override
String get focusTimePoints => '集中時間';
@override
String get focusTimePointsDesc => '1分の集中につき1ポイント';
@override
String get honestyBonusLabel => '正直ボーナス';
@override
String get honestyBonusDesc => '気の散りを記録すると追加ポイント';
@override
String get checkInPoints => '毎日チェックイン';
@override
String get checkInPointsDesc => '毎日の初回チェックインで基本ポイント';
@override
String get streakBonus => '連続ボーナス';
@override
String streakBonusDesc(int days) {
return '$days 日連続チェックイン';
}
@override
String get achievementBonusLabel => '実績ボーナス';
@override
String get weekdayS => '';
@override
String get weekdayM => '';
@override
String get weekdayT => '';
@override
String get weekdayW => '';
@override
String get weekdayTh => '';
@override
String get weekdayF => '';
@override
String get weekdaySa => '';
}

View File

@@ -332,190 +332,241 @@ class AppLocalizationsKo extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => '포인트';
@override
String get level => 'Level';
String get level => '레벨';
@override
String get checked => 'Checked';
String get checked => '체크 완료';
@override
String get checkIn => 'Check In';
String get checkIn => '체크인';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => '획득:';
@override
String get basePoints => 'Base Points';
String get basePoints => '기본 포인트';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => '정직 보너스';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return '총 포인트: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText 기록됨)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ 업적 달성!';
@override
String bonusPoints(int points) {
return '+$points Points';
return '+$points 포인트';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points';
return '체크인 성공! +$points 포인트';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 주간 연속 보너스!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ 새로운 업적 달성!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
String get alreadyCheckedIn => '오늘 이미 체크인했어요! 내일 다시 오세요 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => '체크인 캘린더 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 오늘 체크인';
@override
String get checkedInToday => 'Checked In Today';
String get checkedInToday => '오늘 체크인 완료';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 현재 연속';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 최장 연속';
@override
String get days => 'days';
String get days => '';
@override
String daysCount(int count) {
return '$count days';
return '$count ';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => '업적 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => '모든 업적 보기';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
String get allAchievementsComingSoon => '전체 업적 화면 곧 공개!';
@override
String get profile => 'Profile';
String get profile => '프로필';
@override
String get focuser => 'Focuser';
String get focuser => '집중하는 사람';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return '레벨 $level까지 $points 포인트 남음';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => '집중 초보자';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
String get achievement_first_session_desc => '첫 집중 세션 완료';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => '시작 단계';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc => '10회 집중 세션 완료';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => '집중 애호가';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc => '50회 집중 세션 완료';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => '집중 마스터';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc => '100회 집중 세션 완료';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => '정직한 기록자 · 브론즈';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
String get achievement_honest_bronze_desc => '50회 산만함을 정직하게 기록';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => '정직한 기록자 · 실버';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
String get achievement_honest_silver_desc => '200회 산만함을 정직하게 기록';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => '정직한 기록자 · 골드';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc => '500회 산만함을 정직하게 기록';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => '마라톤 러너';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc => '누적 10시간 집중';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => '센추리 클럽';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc => '누적 100시간 집중';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => '집중 그랜드마스터';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc => '누적 1000시간 집중';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => '끈기의 별';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
String get achievement_persistence_star_desc => '7일 연속 체크인';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => '월간 습관';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
String get achievement_monthly_habit_desc => '30일 연속 체크인';
@override
String get achievement_centurion_name => 'Centurion';
String get achievement_centurion_name => '백일 전사';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc => '100일 연속 체크인';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => '연간 전사';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
String get achievement_year_warrior_desc => '365일 연속 체크인';
@override
String get total => '합계';
@override
String get status => '상태';
@override
String get pointsBreakdown => '포인트 세부 내역';
@override
String get focusTimePoints => '집중 시간';
@override
String get focusTimePointsDesc => '1분 집중당 1포인트';
@override
String get honestyBonusLabel => '정직 보너스';
@override
String get honestyBonusDesc => '산만함 기록 시 추가 포인트';
@override
String get checkInPoints => '일일 체크인';
@override
String get checkInPointsDesc => '매일 첫 체크인 시 기본 포인트';
@override
String get streakBonus => '연속 보너스';
@override
String streakBonusDesc(int days) {
return '$days일 연속 체크인';
}
@override
String get achievementBonusLabel => '업적 보너스';
@override
String get weekdayS => '';
@override
String get weekdayM => '';
@override
String get weekdayT => '';
@override
String get weekdayW => '';
@override
String get weekdayTh => '';
@override
String get weekdayF => '';
@override
String get weekdaySa => '';
}

View File

@@ -337,190 +337,250 @@ class AppLocalizationsPt extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => 'Pontos';
@override
String get level => 'Level';
String get level => 'vel';
@override
String get checked => 'Checked';
String get checked => 'Verificado';
@override
String get checkIn => 'Check In';
String get checkIn => 'Check-in';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => 'Ganhou:';
@override
String get basePoints => 'Base Points';
String get basePoints => 'Pontos base';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => 'Bônus de honestidade';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return 'Total de pontos: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText registradas)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ Conquista desbloqueada!';
@override
String bonusPoints(int points) {
return '+$points Points ⚡';
return '+$points Pontos ⚡';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points ⚡';
return 'Check-in bem-sucedido! +$points pontos ⚡';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 Bônus de sequência semanal!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ Nova conquista desbloqueada!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
String get alreadyCheckedIn => 'Você já fez check-in hoje! Volte amanhã 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'Calendário de check-in 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 Fazer check-in hoje';
@override
String get checkedInToday => '✓ Checked In Today';
String get checkedInToday => '✓ Check-in feito hoje';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 Sequência atual';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 Maior sequência';
@override
String get days => 'days';
String get days => 'dias';
@override
String daysCount(int count) {
return '$count days';
return '$count dias';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => 'Conquistas 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'Ver todas as conquistas';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
'Tela completa de conquistas em breve!';
@override
String get profile => 'Profile';
String get profile => 'Perfil';
@override
String get focuser => 'Focuser';
String get focuser => 'Focador';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return '$points pontos até o nível $level';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => 'Novato em foco';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
'Complete sua primeira sessão de foco';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => 'Começando';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc => 'Complete 10 sessões de foco';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => 'Entusiasta do foco';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc => 'Complete 50 sessões de foco';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => 'Mestre do foco';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc => 'Complete 100 sessões de foco';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => 'Rastreador honesto · Bronze';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
'Registre 50 distrações honestamente';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => 'Rastreador honesto · Prata';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
'Registre 200 distrações honestamente';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => 'Rastreador honesto · Ouro';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc =>
'Registre 500 distrações honestamente';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'Corredor de maratona';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc => 'Acumule 10 horas de tempo de foco';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'Clube do século';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc => 'Acumule 100 horas de tempo de foco';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => 'Grão-mestre do foco';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc => 'Acumule 1000 horas de tempo de foco';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => 'Estrela da persistência';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
'Faça check-in por 7 dias consecutivos';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => 'Hábito mensal';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
'Faça check-in por 30 dias consecutivos';
@override
String get achievement_centurion_name => 'Centurion';
String get achievement_centurion_name => 'Centurião';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc =>
'Faça check-in por 100 dias consecutivos';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => 'Guerreiro do ano';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
'Faça check-in por 365 dias consecutivos';
@override
String get total => 'Total';
@override
String get status => 'Status';
@override
String get pointsBreakdown => 'Detalhamento de pontos';
@override
String get focusTimePoints => 'Tempo de foco';
@override
String get focusTimePointsDesc => '1 ponto por minuto de foco';
@override
String get honestyBonusLabel => 'Bônus de honestidade';
@override
String get honestyBonusDesc => 'Pontos extras por registrar distrações';
@override
String get checkInPoints => 'Check-in diário';
@override
String get checkInPointsDesc => 'Pontos base para check-in diário';
@override
String get streakBonus => 'Bônus de sequência';
@override
String streakBonusDesc(int days) {
return '$days check-ins consecutivos';
}
@override
String get achievementBonusLabel => 'Bônus de conquista';
@override
String get weekdayS => 'D';
@override
String get weekdayM => 'S';
@override
String get weekdayT => 'T';
@override
String get weekdayW => 'Q';
@override
String get weekdayTh => 'Q';
@override
String get weekdayF => 'S';
@override
String get weekdaySa => 'S';
}

View File

@@ -343,190 +343,247 @@ class AppLocalizationsRu extends AppLocalizations {
String get arabic => 'العربية';
@override
String get points => 'Points';
String get points => 'Очки';
@override
String get level => 'Level';
String get level => 'Уровень';
@override
String get checked => 'Checked';
String get checked => 'Отмечено';
@override
String get checkIn => 'Check In';
String get checkIn => 'Отметиться';
@override
String get earnedPoints => 'Earned:';
String get earnedPoints => 'Получено:';
@override
String get basePoints => 'Base Points';
String get basePoints => 'Базовые очки';
@override
String get honestyBonus => 'Honesty Bonus';
String get honestyBonus => 'Бонус за честность';
@override
String totalPoints(int count) {
return 'Total Points: $count';
return 'Всего очков: $count';
}
@override
String distractionsRecorded(int count, Object distractionText) {
return '($count $distractionText recorded)';
return '($count $distractionText записано)';
}
@override
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
String get achievementUnlocked => '🎖️ Достижение разблокировано!';
@override
String bonusPoints(int points) {
return '+$points Points';
return '+$points очков';
}
@override
String checkInSuccess(int points) {
return 'Check-in successful! +$points points';
return 'Отметка успешна! +$points очков';
}
@override
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
String get weeklyStreakBonus => '🎉 Бонус за недельную серию!';
@override
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
String get newAchievementUnlocked => '🎖️ Новое достижение разблокировано!';
@override
String get alreadyCheckedIn =>
'You have already checked in today! Come back tomorrow 📅';
'Вы уже отметились сегодня! Приходите завтра 📅';
@override
String get checkInCalendar => 'Check-In Calendar 📅';
String get checkInCalendar => 'Календарь отметок 📅';
@override
String get checkInToday => '📅 Check In Today';
String get checkInToday => '📅 Отметиться сегодня';
@override
String get checkedInToday => 'Checked In Today';
String get checkedInToday => 'Отмечен сегодня';
@override
String get currentStreak => '🔥 Current Streak';
String get currentStreak => '🔥 Текущая серия';
@override
String get longestStreak => '🏆 Longest Streak';
String get longestStreak => '🏆 Самая длинная серия';
@override
String get days => 'days';
String get days => 'дней';
@override
String daysCount(int count) {
return '$count days';
return '$count дней';
}
@override
String get achievements => 'Achievements 🎖️';
String get achievements => 'Достижения 🎖️';
@override
String get viewAllAchievements => 'View All Achievements';
String get viewAllAchievements => 'Посмотреть все достижения';
@override
String get allAchievementsComingSoon =>
'Full achievements screen coming soon!';
String get allAchievementsComingSoon => 'Полный экран достижений скоро!';
@override
String get profile => 'Profile';
String get profile => 'Профиль';
@override
String get focuser => 'Focuser';
String get focuser => 'Сосредоточенный';
@override
String pointsToNextLevel(int points, int level) {
return '$points points to Level $level';
return '$points очков до уровня $level';
}
@override
String get achievement_first_session_name => 'Focus Newbie';
String get achievement_first_session_name => 'Новичок фокуса';
@override
String get achievement_first_session_desc =>
'Complete your first focus session';
'Завершите первую сессию фокусировки';
@override
String get achievement_sessions_10_name => 'Getting Started';
String get achievement_sessions_10_name => 'Начало';
@override
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
String get achievement_sessions_10_desc => 'Завершите 10 сессий фокусировки';
@override
String get achievement_sessions_50_name => 'Focus Enthusiast';
String get achievement_sessions_50_name => 'Энтузиаст фокуса';
@override
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
String get achievement_sessions_50_desc => 'Завершите 50 сессий фокусировки';
@override
String get achievement_sessions_100_name => 'Focus Master';
String get achievement_sessions_100_name => 'Мастер фокуса';
@override
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
String get achievement_sessions_100_desc =>
'Завершите 100 сессий фокусировки';
@override
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
String get achievement_honest_bronze_name => 'Честный трекер · Бронза';
@override
String get achievement_honest_bronze_desc =>
'Record 50 distractions honestly';
String get achievement_honest_bronze_desc => 'Честно запишите 50 отвлечений';
@override
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
String get achievement_honest_silver_name => 'Честный трекер · Серебро';
@override
String get achievement_honest_silver_desc =>
'Record 200 distractions honestly';
String get achievement_honest_silver_desc => 'Честно запишите 200 отвлечений';
@override
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
String get achievement_honest_gold_name => 'Честный трекер · Золото';
@override
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
String get achievement_honest_gold_desc => 'Честно запишите 500 отвлечений';
@override
String get achievement_marathon_name => 'Marathon Runner';
String get achievement_marathon_name => 'Марафонец';
@override
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
String get achievement_marathon_desc =>
'Накопите 10 часов времени фокусировки';
@override
String get achievement_century_name => 'Century Club';
String get achievement_century_name => 'Клуб столетия';
@override
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
String get achievement_century_desc =>
'Накопите 100 часов времени фокусировки';
@override
String get achievement_master_name => 'Focus Grandmaster';
String get achievement_master_name => 'Гроссмейстер фокуса';
@override
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
String get achievement_master_desc =>
'Накопите 1000 часов времени фокусировки';
@override
String get achievement_persistence_star_name => 'Persistence Star';
String get achievement_persistence_star_name => 'Звезда упорства';
@override
String get achievement_persistence_star_desc =>
'Check in for 7 consecutive days';
String get achievement_persistence_star_desc => 'Отмечайтесь 7 дней подряд';
@override
String get achievement_monthly_habit_name => 'Monthly Habit';
String get achievement_monthly_habit_name => 'Месячная привычка';
@override
String get achievement_monthly_habit_desc =>
'Check in for 30 consecutive days';
String get achievement_monthly_habit_desc => 'Отмечайтесь 30 дней подряд';
@override
String get achievement_centurion_name => 'Centurion';
String get achievement_centurion_name => 'Центурион';
@override
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
String get achievement_centurion_desc => 'Отмечайтесь 100 дней подряд';
@override
String get achievement_year_warrior_name => 'Year Warrior';
String get achievement_year_warrior_name => 'Воин года';
@override
String get achievement_year_warrior_desc =>
'Check in for 365 consecutive days';
String get achievement_year_warrior_desc => 'Отмечайтесь 365 дней подряд';
@override
String get total => 'Всего';
@override
String get status => 'Статус';
@override
String get pointsBreakdown => 'Разбивка очков';
@override
String get focusTimePoints => 'Время фокусировки';
@override
String get focusTimePointsDesc => '1 очко за минуту фокусировки';
@override
String get honestyBonusLabel => 'Бонус за честность';
@override
String get honestyBonusDesc => 'Дополнительные очки за запись отвлечений';
@override
String get checkInPoints => 'Ежедневная отметка';
@override
String get checkInPointsDesc => 'Базовые очки за ежедневную отметку';
@override
String get streakBonus => 'Бонус за серию';
@override
String streakBonusDesc(int days) {
return '$days дней подряд';
}
@override
String get achievementBonusLabel => 'Бонус за достижение';
@override
String get weekdayS => 'В';
@override
String get weekdayM => 'П';
@override
String get weekdayT => 'В';
@override
String get weekdayW => 'С';
@override
String get weekdayTh => 'Ч';
@override
String get weekdayF => 'П';
@override
String get weekdaySa => 'С';
}

View File

@@ -506,4 +506,63 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get achievement_year_warrior_desc => '连续签到 365 天';
@override
String get total => '总计';
@override
String get status => '状态';
@override
String get pointsBreakdown => '积分明细';
@override
String get focusTimePoints => '专注时长';
@override
String get focusTimePointsDesc => '每专注1分钟获得1积分';
@override
String get honestyBonusLabel => '诚实奖励';
@override
String get honestyBonusDesc => '记录分心情况获得额外积分';
@override
String get checkInPoints => '每日签到';
@override
String get checkInPointsDesc => '每日首次签到获得基础积分';
@override
String get streakBonus => '连续签到奖励';
@override
String streakBonusDesc(int days) {
return '连续签到 $days';
}
@override
String get achievementBonusLabel => '成就奖励';
@override
String get weekdayS => '';
@override
String get weekdayM => '';
@override
String get weekdayT => '';
@override
String get weekdayW => '';
@override
String get weekdayTh => '';
@override
String get weekdayF => '';
@override
String get weekdaySa => '';
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "Pontos",
"level": "Nível",
"checked": "Verificado",
"checkIn": "Check-in",
"earnedPoints": "Ganhou:",
"basePoints": "Pontos base",
"honestyBonus": "Bônus de honestidade",
"totalPoints": "Total de pontos: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} registradas)",
"achievementUnlocked": "🎖️ Conquista desbloqueada!",
"bonusPoints": "+{points} Pontos ⚡",
"checkInSuccess": "Check-in bem-sucedido! +{points} pontos ⚡",
"weeklyStreakBonus": "🎉 Bônus de sequência semanal!",
"newAchievementUnlocked": "🎖️ Nova conquista desbloqueada!",
"alreadyCheckedIn": "Você já fez check-in hoje! Volte amanhã 📅",
"checkInCalendar": "Calendário de check-in 📅",
"checkInToday": "📅 Fazer check-in hoje",
"checkedInToday": "✓ Check-in feito hoje",
"currentStreak": "🔥 Sequência atual",
"longestStreak": "🏆 Maior sequência",
"days": "dias",
"daysCount": "{count} dias",
"achievements": "Conquistas 🎖️",
"viewAllAchievements": "Ver todas as conquistas",
"allAchievementsComingSoon": "Tela completa de conquistas em breve!",
"profile": "Perfil",
"focuser": "Focador",
"pointsToNextLevel": "{points} pontos até o nível {level}",
"achievement_first_session_name": "Novato em foco",
"achievement_first_session_desc": "Complete sua primeira sessão de foco",
"achievement_sessions_10_name": "Começando",
"achievement_sessions_10_desc": "Complete 10 sessões de foco",
"achievement_sessions_50_name": "Entusiasta do foco",
"achievement_sessions_50_desc": "Complete 50 sessões de foco",
"achievement_sessions_100_name": "Mestre do foco",
"achievement_sessions_100_desc": "Complete 100 sessões de foco",
"achievement_honest_bronze_name": "Rastreador honesto · Bronze",
"achievement_honest_bronze_desc": "Registre 50 distrações honestamente",
"achievement_honest_silver_name": "Rastreador honesto · Prata",
"achievement_honest_silver_desc": "Registre 200 distrações honestamente",
"achievement_honest_gold_name": "Rastreador honesto · Ouro",
"achievement_honest_gold_desc": "Registre 500 distrações honestamente",
"achievement_marathon_name": "Corredor de maratona",
"achievement_marathon_desc": "Acumule 10 horas de tempo de foco",
"achievement_century_name": "Clube do século",
"achievement_century_desc": "Acumule 100 horas de tempo de foco",
"achievement_master_name": "Grão-mestre do foco",
"achievement_master_desc": "Acumule 1000 horas de tempo de foco",
"achievement_persistence_star_name": "Estrela da persistência",
"achievement_persistence_star_desc": "Faça check-in por 7 dias consecutivos",
"achievement_monthly_habit_name": "Hábito mensal",
"achievement_monthly_habit_desc": "Faça check-in por 30 dias consecutivos",
"achievement_centurion_name": "Centurião",
"achievement_centurion_desc": "Faça check-in por 100 dias consecutivos",
"achievement_year_warrior_name": "Guerreiro do ano",
"achievement_year_warrior_desc": "Faça check-in por 365 dias consecutivos",
"total": "Total",
"status": "Status",
"pointsBreakdown": "Detalhamento de pontos",
"focusTimePoints": "Tempo de foco",
"focusTimePointsDesc": "1 ponto por minuto de foco",
"honestyBonusLabel": "Bônus de honestidade",
"honestyBonusDesc": "Pontos extras por registrar distrações",
"checkInPoints": "Check-in diário",
"checkInPointsDesc": "Pontos base para check-in diário",
"streakBonus": "Bônus de sequência",
"streakBonusDesc": "{days} check-ins consecutivos",
"achievementBonusLabel": "Bônus de conquista",
"weekdayS": "D",
"weekdayM": "S",
"weekdayT": "T",
"weekdayW": "Q",
"weekdayTh": "Q",
"weekdayF": "S",
"weekdaySa": "S"
}

View File

@@ -121,5 +121,84 @@
"hindi": "हिन्दी",
"indonesian": "Bahasa Indonesia",
"italian": "Italiano",
"arabic": "العربية"
"arabic": "العربية",
"points": "Очки",
"level": "Уровень",
"checked": "Отмечено",
"checkIn": "Отметиться",
"earnedPoints": "Получено:",
"basePoints": "Базовые очки",
"honestyBonus": "Бонус за честность",
"totalPoints": "Всего очков: {count} ⚡",
"distractionsRecorded": "({count} {distractionText} записано)",
"achievementUnlocked": "🎖️ Достижение разблокировано!",
"bonusPoints": "+{points} очков ⚡",
"checkInSuccess": "Отметка успешна! +{points} очков ⚡",
"weeklyStreakBonus": "🎉 Бонус за недельную серию!",
"newAchievementUnlocked": "🎖️ Новое достижение разблокировано!",
"alreadyCheckedIn": "Вы уже отметились сегодня! Приходите завтра 📅",
"checkInCalendar": "Календарь отметок 📅",
"checkInToday": "📅 Отметиться сегодня",
"checkedInToday": "✓ Отмечен сегодня",
"currentStreak": "🔥 Текущая серия",
"longestStreak": "🏆 Самая длинная серия",
"days": "дней",
"daysCount": "{count} дней",
"achievements": "Достижения 🎖️",
"viewAllAchievements": "Посмотреть все достижения",
"allAchievementsComingSoon": "Полный экран достижений скоро!",
"profile": "Профиль",
"focuser": "Сосредоточенный",
"pointsToNextLevel": "{points} очков до уровня {level}",
"achievement_first_session_name": "Новичок фокуса",
"achievement_first_session_desc": "Завершите первую сессию фокусировки",
"achievement_sessions_10_name": "Начало",
"achievement_sessions_10_desc": "Завершите 10 сессий фокусировки",
"achievement_sessions_50_name": "Энтузиаст фокуса",
"achievement_sessions_50_desc": "Завершите 50 сессий фокусировки",
"achievement_sessions_100_name": "Мастер фокуса",
"achievement_sessions_100_desc": "Завершите 100 сессий фокусировки",
"achievement_honest_bronze_name": "Честный трекер · Бронза",
"achievement_honest_bronze_desc": "Честно запишите 50 отвлечений",
"achievement_honest_silver_name": "Честный трекер · Серебро",
"achievement_honest_silver_desc": "Честно запишите 200 отвлечений",
"achievement_honest_gold_name": "Честный трекер · Золото",
"achievement_honest_gold_desc": "Честно запишите 500 отвлечений",
"achievement_marathon_name": "Марафонец",
"achievement_marathon_desc": "Накопите 10 часов времени фокусировки",
"achievement_century_name": "Клуб столетия",
"achievement_century_desc": "Накопите 100 часов времени фокусировки",
"achievement_master_name": "Гроссмейстер фокуса",
"achievement_master_desc": "Накопите 1000 часов времени фокусировки",
"achievement_persistence_star_name": "Звезда упорства",
"achievement_persistence_star_desc": "Отмечайтесь 7 дней подряд",
"achievement_monthly_habit_name": "Месячная привычка",
"achievement_monthly_habit_desc": "Отмечайтесь 30 дней подряд",
"achievement_centurion_name": "Центурион",
"achievement_centurion_desc": "Отмечайтесь 100 дней подряд",
"achievement_year_warrior_name": "Воин года",
"achievement_year_warrior_desc": "Отмечайтесь 365 дней подряд",
"total": "Всего",
"status": "Статус",
"pointsBreakdown": "Разбивка очков",
"focusTimePoints": "Время фокусировки",
"focusTimePointsDesc": "1 очко за минуту фокусировки",
"honestyBonusLabel": "Бонус за честность",
"honestyBonusDesc": "Дополнительные очки за запись отвлечений",
"checkInPoints": "Ежедневная отметка",
"checkInPointsDesc": "Базовые очки за ежедневную отметку",
"streakBonus": "Бонус за серию",
"streakBonusDesc": "{days} дней подряд",
"achievementBonusLabel": "Бонус за достижение",
"weekdayS": "В",
"weekdayM": "П",
"weekdayT": "В",
"weekdayW": "С",
"weekdayTh": "Ч",
"weekdayF": "П",
"weekdaySa": "С"
}

View File

@@ -179,5 +179,26 @@
"achievement_centurion_name": "百日勇士",
"achievement_centurion_desc": "连续签到 100 天",
"achievement_year_warrior_name": "年度战士",
"achievement_year_warrior_desc": "连续签到 365 天"
"achievement_year_warrior_desc": "连续签到 365 天",
"total": "总计",
"status": "状态",
"pointsBreakdown": "积分明细",
"focusTimePoints": "专注时长",
"focusTimePointsDesc": "每专注1分钟获得1积分",
"honestyBonusLabel": "诚实奖励",
"honestyBonusDesc": "记录分心情况获得额外积分",
"checkInPoints": "每日签到",
"checkInPointsDesc": "每日首次签到获得基础积分",
"streakBonus": "连续签到奖励",
"streakBonusDesc": "连续签到 {days} 天",
"achievementBonusLabel": "成就奖励",
"weekdayS": "日",
"weekdayM": "一",
"weekdayT": "二",
"weekdayW": "三",
"weekdayTh": "四",
"weekdayF": "五",
"weekdaySa": "六"
}

View File

@@ -98,7 +98,7 @@ class _HistoryScreenState extends State<HistoryScreen> {
const SizedBox(height: 32),
ElevatedButton(
onPressed: () => Navigator.pop(context),
child: const Text('Start Focusing'),
child: Text(l10n.startFocusing),
),
],
),
@@ -159,7 +159,7 @@ class _HistoryScreenState extends State<HistoryScreen> {
children: [
Expanded(
child: _buildStat(
'Total',
l10n.total,
l10n.minutesValue(totalMins, l10n.minutes(totalMins)),
'⏱️',
),
@@ -167,7 +167,7 @@ class _HistoryScreenState extends State<HistoryScreen> {
const SizedBox(width: 16),
Expanded(
child: _buildStat(
'Distractions',
l10n.distractions(distractions),
l10n.distractionsCount(
distractions,
l10n.times(distractions),

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import '../l10n/app_localizations.dart';
import '../theme/app_colors.dart';
import '../theme/app_constants.dart';
import '../services/storage_service.dart';
import '../services/points_service.dart';
import '../services/achievement_service.dart';
@@ -418,14 +419,14 @@ class _ProfileScreenState extends State<ProfileScreen> {
const SizedBox(height: 16),
// Calendar grid (last 28 days)
_buildCalendarGrid(),
_buildCalendarGrid(l10n),
],
),
);
}
/// Build calendar grid showing check-in history
Widget _buildCalendarGrid() {
Widget _buildCalendarGrid(AppLocalizations l10n) {
final now = DateTime.now();
final today = DateTime(now.year, now.month, now.day);
@@ -434,16 +435,24 @@ class _ProfileScreenState extends State<ProfileScreen> {
// Weekday labels
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: ['S', 'M', 'T', 'W', 'T', 'F', 'S']
children: [
l10n.weekdayS,
l10n.weekdayM,
l10n.weekdayT,
l10n.weekdayW,
l10n.weekdayTh,
l10n.weekdayF,
l10n.weekdaySa,
]
.map(
(day) => SizedBox(
width: 40,
width: ProfileConstants.calendarCellSize,
child: Center(
child: Text(
day,
style: const TextStyle(
style: TextStyle(
fontFamily: 'Nunito',
fontSize: 12,
fontSize: FontSizes.caption,
fontWeight: FontWeight.w600,
color: AppColors.textSecondary,
),

View File

@@ -115,7 +115,7 @@ class SessionDetailScreen extends StatelessWidget {
_buildStatRow(
icon: '🤚',
label: 'Distractions',
label: l10n.distractions(session.distractionCount),
value:
'${session.distractionCount} ${l10n.times(session.distractionCount)}',
),
@@ -123,7 +123,7 @@ class SessionDetailScreen extends StatelessWidget {
_buildStatRow(
icon: '🏁',
label: 'Status',
label: l10n.status,
value: session.completed
? l10n.completed
: l10n.stoppedEarly,

View File

@@ -6,6 +6,7 @@ import '../models/user_progress.dart';
class PointsService {
/// Calculate points earned from a focus session
/// Returns a map with breakdown: {basePoints, honestyBonus, total, breakdown}
/// Note: breakdown contains labelKey and descriptionKey for localization
Map<String, dynamic> calculateSessionPoints(FocusSession session) {
// Base points = actual minutes focused
int basePoints = session.actualMinutes;
@@ -18,17 +19,17 @@ class PointsService {
int total = basePoints + honestyBonus;
// Detailed breakdown for UI display
// Detailed breakdown for UI display (using localization keys)
List<Map<String, dynamic>> breakdown = [
{
'label': '专注时长',
'labelKey': 'focusTimePoints',
'value': basePoints,
'description': '每专注1分钟获得1积分',
'descriptionKey': 'focusTimePointsDesc',
},
{
'label': '诚实奖励',
'labelKey': 'honestyBonusLabel',
'value': honestyBonus,
'description': '记录分心情况获得额外积分',
'descriptionKey': 'honestyBonusDesc',
},
];
@@ -56,6 +57,7 @@ class PointsService {
}
/// Process daily check-in and return points earned with detailed breakdown
/// Note: breakdown contains labelKey and descriptionKey for localization
Map<String, dynamic> processCheckIn(UserProgress progress) {
final now = DateTime.now();
@@ -63,9 +65,9 @@ class PointsService {
int points = 5;
List<Map<String, dynamic>> breakdown = [
{
'label': '每日签到',
'labelKey': 'checkInPoints',
'value': 5,
'description': '每日首次签到获得基础积分',
'descriptionKey': 'checkInPointsDesc',
},
];
@@ -78,17 +80,19 @@ class PointsService {
int weeklyBonus = 30;
points += weeklyBonus;
breakdown.add({
'label': '连续签到奖励',
'labelKey': 'streakBonus',
'value': weeklyBonus,
'description': '连续签到${progress.consecutiveCheckIns}',
'descriptionKey': 'streakBonusDesc',
'descriptionParams': {'days': progress.consecutiveCheckIns},
});
} else if (progress.consecutiveCheckIns % 30 == 0) {
int monthlyBonus = 100;
points += monthlyBonus;
breakdown.add({
'label': '连续签到奖励',
'labelKey': 'streakBonus',
'value': monthlyBonus,
'description': '连续签到${progress.consecutiveCheckIns}',
'descriptionKey': 'streakBonusDesc',
'descriptionParams': {'days': progress.consecutiveCheckIns},
});
}
} else {

View File

@@ -0,0 +1,169 @@
/// Design system constants for FocusBuddy app
///
/// This file contains all magic numbers extracted from the codebase
/// to ensure consistency and maintainability.
library;
/// Spacing constants following 8px grid system
class AppSpacing {
AppSpacing._();
static const double xs = 4.0;
static const double sm = 8.0;
static const double md = 12.0;
static const double base = 16.0;
static const double lg = 20.0;
static const double xl = 24.0;
static const double xxl = 32.0;
static const double xxxl = 40.0;
static const double huge = 48.0;
static const double massive = 60.0;
static const double gigantic = 80.0;
}
/// Duration-related constants
class AppDurations {
AppDurations._();
// Default focus session duration (minutes)
static const int defaultFocusDuration = 25;
// Available duration options (minutes)
static const List<int> availableDurations = [15, 25, 45];
// Timer tick interval
static const Duration timerTickInterval = Duration(seconds: 1);
// Seconds per minute (for conversions)
static const int secondsPerMinute = 60;
// Notification update interval when app is backgrounded
static const int notificationUpdateIntervalSeconds = 30;
// Animation durations
static const Duration pageTransition = Duration(milliseconds: 300);
// SnackBar display durations
static const Duration snackBarShort = Duration(seconds: 2);
static const Duration snackBarMedium = Duration(seconds: 3);
}
/// Onboarding screen constants
class OnboardingConstants {
OnboardingConstants._();
static const int totalPages = 3;
static const double horizontalPadding = 32.0;
static const double emojiSize = 80.0;
static const double indicatorWidth = 24.0;
static const double indicatorHeight = 4.0;
static const double indicatorActiveWidth = 8.0;
static const double indicatorActiveHeight = 8.0;
}
/// Settings screen constants
class SettingsConstants {
SettingsConstants._();
static const double iconSize = 16.0;
static const double sectionSpacing = 20.0;
static const double optionHeight = 12.0;
static const double optionSpacing = 2.0;
static const double radioButtonSize = 20.0;
static const double radioCheckIconSize = 12.0;
static const double badgeFontSize = 12.0;
}
/// Profile screen constants
class ProfileConstants {
ProfileConstants._();
static const double avatarRadius = 40.0;
static const double avatarEmojiSize = 40.0;
static const double statDividerHeight = 40.0;
static const double progressBarHeight = 10.0;
static const double progressBarRadius = 5.0;
static const double calendarCellSize = 40.0;
static const int calendarDisplayDays = 28;
static const int maxDisplayedAchievements = 6;
// Check-in milestones
static const int weeklyCheckInMilestone = 7;
}
/// Completion screen constants
class CompletionConstants {
CompletionConstants._();
static const double emojiSize = 64.0;
}
/// Calendar constants (shared between profile and session detail)
class CalendarConstants {
CalendarConstants._();
static const int displayDays = 28;
static const int daysOffset = 27; // displayDays - 1
}
/// Points and gamification constants
class GameConstants {
GameConstants._();
// Points calculation
static const int pointsPerFocusMinute = 1;
static const int honestyBonusMinutesPerDistraction = 10;
// Check-in rewards
static const int checkInBasePoints = 5;
static const int weeklyStreakDays = 7;
static const int weeklyStreakBonus = 30;
static const int monthlyStreakDays = 30;
static const int monthlyStreakBonus = 100;
// Level progression
static const int pointsPerLevel = 100;
}
/// Notification IDs
class NotificationIds {
NotificationIds._();
static const int complete = 0;
static const int reminder = 1;
static const int ongoing = 2;
}
/// Icon sizes
class IconSizes {
IconSizes._();
static const double small = 12.0;
static const double medium = 16.0;
static const double large = 20.0;
static const double extraLarge = 24.0;
}
/// Font sizes (complementing AppTextStyles)
class FontSizes {
FontSizes._();
static const double caption = 12.0;
static const double body = 14.0;
static const double bodyLarge = 16.0;
static const double subtitle = 18.0;
static const double title = 20.0;
static const double heading = 28.0;
static const double display = 32.0;
}
/// Border radius values
class BorderRadii {
BorderRadii._();
static const double small = 8.0;
static const double medium = 12.0;
static const double large = 16.0;
static const double extraLarge = 24.0;
static const double circular = 999.0;
}