优化
This commit is contained in:
@@ -50,7 +50,19 @@
|
|||||||
"Bash(then find android/app/build/outputs -type f ( -name \"*.aab\" -o -name \"*.apk\" ))",
|
"Bash(then find android/app/build/outputs -type f ( -name \"*.aab\" -o -name \"*.apk\" ))",
|
||||||
"Bash(else echo \"outputs 目录不存在,可能还未构建过\")",
|
"Bash(else echo \"outputs 目录不存在,可能还未构建过\")",
|
||||||
"Bash(fi)",
|
"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": [],
|
"deny": [],
|
||||||
"ask": []
|
"ask": []
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import java.util.Properties
|
||||||
|
import java.io.FileInputStream
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
id("kotlin-android")
|
id("kotlin-android")
|
||||||
@@ -5,6 +8,13 @@ plugins {
|
|||||||
id("dev.flutter.flutter-gradle-plugin")
|
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 {
|
android {
|
||||||
namespace = "com.focusbuddy.focus_buddy"
|
namespace = "com.focusbuddy.focus_buddy"
|
||||||
compileSdk = flutter.compileSdkVersion
|
compileSdk = flutter.compileSdkVersion
|
||||||
@@ -31,11 +41,18 @@ android {
|
|||||||
versionName = flutter.versionName
|
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 {
|
buildTypes {
|
||||||
release {
|
release {
|
||||||
// TODO: Add your own signing config for the release build.
|
signingConfig = signingConfigs.getByName("release")
|
||||||
// Signing with the debug keys for now, so `flutter run --release` works.
|
|
||||||
signingConfig = signingConfigs.getByName("debug")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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": "س"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -531,5 +531,105 @@
|
|||||||
"achievement_year_warrior_desc": "Check in for 365 consecutive days",
|
"achievement_year_warrior_desc": "Check in for 365 consecutive days",
|
||||||
"@achievement_year_warrior_desc": {
|
"@achievement_year_warrior_desc": {
|
||||||
"description": "365 day streak achievement description"
|
"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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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": "श"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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": "土"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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": "토"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -992,6 +992,120 @@ abstract class AppLocalizations {
|
|||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
/// **'Check in for 365 consecutive days'**
|
/// **'Check in for 365 consecutive days'**
|
||||||
String get achievement_year_warrior_desc;
|
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
|
class _AppLocalizationsDelegate
|
||||||
|
|||||||
@@ -335,190 +335,244 @@ class AppLocalizationsAr extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => 'النقاط';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'المستوى';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'تم التسجيل';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'تسجيل الحضور';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => 'المكتسب:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => 'النقاط الأساسية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => 'مكافأة الصدق';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return 'إجمالي النقاط: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText مسجلة)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ إنجاز مفتوح!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points نقاط ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return 'تسجيل الحضور ناجح! +$points نقاط ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 مكافأة السلسلة الأسبوعية!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ إنجاز جديد مفتوح!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn => 'لقد سجلت حضورك اليوم بالفعل! عد غدًا 📅';
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'تقويم تسجيل الحضور 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 سجل الحضور اليوم';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ تم التسجيل اليوم';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 السلسلة الحالية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 أطول سلسلة';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => 'أيام';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count أيام';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => 'الإنجازات 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'عرض جميع الإنجازات';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon => 'شاشة الإنجازات الكاملة قريبًا!';
|
||||||
'Full achievements screen coming soon!';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'الملف الشخصي';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => 'المركز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return '$points نقاط إلى المستوى $level';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => 'مبتدئ التركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc => 'أكمل جلسة التركيز الأولى';
|
||||||
'Complete your first focus session';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => 'البداية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc => 'أكمل 10 جلسات تركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => 'عاشق التركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc => 'أكمل 50 جلسة تركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => 'سيد التركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc => 'أكمل 100 جلسة تركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => 'المتتبع الصادق · برونزي';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc => 'سجل 50 تشتتًا بصدق';
|
||||||
'Record 50 distractions honestly';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => 'المتتبع الصادق · فضي';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc => 'سجل 200 تشتت بصدق';
|
||||||
'Record 200 distractions honestly';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => 'المتتبع الصادق · ذهبي';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc => 'سجل 500 تشتت بصدق';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'عداء الماراثون';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
|
String get achievement_marathon_desc => 'اجمع 10 ساعات من وقت التركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'نادي القرن';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
|
String get achievement_century_desc => 'اجمع 100 ساعة من وقت التركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => 'جراند ماستر التركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
|
String get achievement_master_desc => 'اجمع 1000 ساعة من وقت التركيز';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => 'نجمة المثابرة';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc =>
|
||||||
'Check in for 7 consecutive days';
|
'سجل الحضور لمدة 7 أيام متتالية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => 'العادة الشهرية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc =>
|
||||||
'Check in for 30 consecutive days';
|
'سجل الحضور لمدة 30 يومًا متتاليًا';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => 'المئوي';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
|
String get achievement_centurion_desc => 'سجل الحضور لمدة 100 يوم متتالٍ';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => 'محارب العام';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
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 => 'س';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,190 +338,248 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => 'Punkte';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'Level';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'Geprüft';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'Einchecken';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => 'Verdient:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => 'Basispunkte';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => 'Ehrlichkeitsbonus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return 'Gesamt Punkte: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText aufgezeichnet)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ Erfolg freigeschaltet!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points Punkte ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return 'Check-in erfolgreich! +$points Punkte ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 Wöchentlicher Streak-Bonus!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ Neuer Erfolg freigeschaltet!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn =>
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
'Du hast heute bereits eingecheckt! Komm morgen wieder 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'Check-in-Kalender 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 Heute einchecken';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ Heute eingecheckt';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 Aktueller Streak';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 Längster Streak';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => 'Tage';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count Tage';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => 'Erfolge 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'Alle Erfolge anzeigen';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon =>
|
||||||
'Full achievements screen coming soon!';
|
'Vollständiger Erfolge-Bildschirm kommt bald!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'Profil';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => 'Fokussierer';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return '$points Punkte bis Level $level';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => 'Fokus-Neuling';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc =>
|
||||||
'Complete your first focus session';
|
'Schließe deine erste Fokussitzung ab';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => 'Erste Schritte';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc => 'Schließe 10 Fokussitzungen ab';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => 'Fokus-Enthusiast';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc => 'Schließe 50 Fokussitzungen ab';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => 'Fokus-Meister';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc => 'Schließe 100 Fokussitzungen ab';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => 'Ehrlicher Tracker · Bronze';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc =>
|
||||||
'Record 50 distractions honestly';
|
'Zeichne 50 Ablenkungen ehrlich auf';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => 'Ehrlicher Tracker · Silber';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc =>
|
||||||
'Record 200 distractions honestly';
|
'Zeichne 200 Ablenkungen ehrlich auf';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => 'Ehrlicher Tracker · Gold';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc =>
|
||||||
|
'Zeichne 500 Ablenkungen ehrlich auf';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'Marathon-Läufer';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
|
String get achievement_marathon_desc => 'Sammle 10 Stunden Fokuszeit';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'Jahrhundert-Club';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
|
String get achievement_century_desc => 'Sammle 100 Stunden Fokuszeit';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => 'Fokus-Großmeister';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
|
String get achievement_master_desc => 'Sammle 1000 Stunden Fokuszeit';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => 'Beharrlichkeitsstern';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc => 'Checke 7 Tage in Folge ein';
|
||||||
'Check in for 7 consecutive days';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => 'Monatliche Gewohnheit';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc => 'Checke 30 Tage in Folge ein';
|
||||||
'Check in for 30 consecutive days';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => 'Zenturio';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
|
String get achievement_centurion_desc => 'Checke 100 Tage in Folge ein';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => 'Jahreskrieger';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
String get achievement_year_warrior_desc => 'Checke 365 Tage in Folge ein';
|
||||||
'Check in for 365 consecutive days';
|
|
||||||
|
@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';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -522,4 +522,63 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
String get achievement_year_warrior_desc =>
|
||||||
'Check in for 365 consecutive days';
|
'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';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -339,190 +339,254 @@ class AppLocalizationsEs extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => 'Puntos';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'Nivel';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'Registrado';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'Registrarse';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => 'Ganado:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => 'Puntos Base';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => 'Bono de Honestidad';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return 'Puntos Totales: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText registradas)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ ¡Logro Desbloqueado!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points Puntos ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return '¡Registro exitoso! +$points puntos ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 ¡Bono de racha semanal!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ ¡Nuevo logro desbloqueado!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn => '¡Ya te registraste hoy! Vuelve mañana 📅';
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'Calendario de Registro 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 Registrarse Hoy';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ Registrado Hoy';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 Racha Actual';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 Racha Más Larga';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => 'días';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count días';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => 'Logros 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'Ver Todos los Logros';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon =>
|
||||||
'Full achievements screen coming soon!';
|
'¡Pantalla completa de logros próximamente!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'Perfil';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => 'Enfocador';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return '$points puntos para Nivel $level';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => 'Novato del Enfoque';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc =>
|
||||||
'Complete your first focus session';
|
'Completa tu primera sesión de enfoque';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => 'Comenzando';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc => 'Completa 10 sesiones de enfoque';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => 'Entusiasta del Enfoque';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc => 'Completa 50 sesiones de enfoque';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => 'Maestro del Enfoque';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc =>
|
||||||
|
'Completa 100 sesiones de enfoque';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => 'Registrador Honesto · Bronce';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc =>
|
||||||
'Record 50 distractions honestly';
|
'Registra 50 distracciones honestamente';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => 'Registrador Honesto · Plata';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc =>
|
||||||
'Record 200 distractions honestly';
|
'Registra 200 distracciones honestamente';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => 'Registrador Honesto · Oro';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc =>
|
||||||
|
'Registra 500 distracciones honestamente';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'Corredor de Maratón';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'Club del Siglo';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => 'Gran Maestro del Enfoque';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => 'Estrella de Persistencia';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc =>
|
||||||
'Check in for 7 consecutive days';
|
'Regístrate durante 7 días consecutivos';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => 'Hábito Mensual';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc =>
|
||||||
'Check in for 30 consecutive days';
|
'Regístrate durante 30 días consecutivos';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => 'Centurión';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => 'Guerrero del Año';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
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';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -342,35 +342,35 @@ class AppLocalizationsFr extends AppLocalizations {
|
|||||||
String get points => 'Points';
|
String get points => 'Points';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'Niveau';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'Vérifié';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'S\'enregistrer';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => 'Gagné:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => 'Points de base';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => 'Bonus d\'honnêteté';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return 'Total des points: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText enregistrées)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ Succès débloqué!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
@@ -379,150 +379,219 @@ class AppLocalizationsFr extends AppLocalizations {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return 'Enregistrement réussi! +$points points ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 Bonus de série hebdomadaire!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ Nouveau succès débloqué!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn =>
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
'Vous vous êtes déjà enregistré aujourd\'hui! Revenez demain 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'Calendrier d\'enregistrement 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 S\'enregistrer aujourd\'hui';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ Enregistré aujourd\'hui';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 Série actuelle';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 Plus longue série';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => 'jours';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count jours';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => 'Succès 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'Voir tous les succès';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon =>
|
||||||
'Full achievements screen coming soon!';
|
'Écran complet des succès bientôt disponible!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'Profil';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => 'Concentrateur';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return '$points points jusqu\'au niveau $level';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => 'Débutant en concentration';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc =>
|
||||||
'Complete your first focus session';
|
'Complétez votre première session de concentration';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => 'Premiers pas';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc =>
|
||||||
|
'Complétez 10 sessions de concentration';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => 'Passionné de concentration';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc =>
|
||||||
|
'Complétez 50 sessions de concentration';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => 'Maître de la concentration';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc =>
|
||||||
|
'Complétez 100 sessions de concentration';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => 'Tracker honnête · Bronze';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc =>
|
||||||
'Record 50 distractions honestly';
|
'Enregistrez 50 distractions honnêtement';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => 'Tracker honnête · Argent';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc =>
|
||||||
'Record 200 distractions honestly';
|
'Enregistrez 200 distractions honnêtement';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => 'Tracker honnête · Or';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc =>
|
||||||
|
'Enregistrez 500 distractions honnêtement';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'Coureur de marathon';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'Club du siècle';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => 'Grand maître de la concentration';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => 'Étoile de la persévérance';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc =>
|
||||||
'Check in for 7 consecutive days';
|
'Enregistrez-vous pendant 7 jours consécutifs';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => 'Habitude mensuelle';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc =>
|
||||||
'Check in for 30 consecutive days';
|
'Enregistrez-vous pendant 30 jours consécutifs';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => 'Centurion';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => 'Guerrier de l\'année';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
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';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,190 +338,247 @@ class AppLocalizationsHi extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => 'अंक';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'स्तर';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'चेक किया';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'चेक-इन';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => 'अर्जित:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => 'मूल अंक';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => 'ईमानदारी बोनस';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return 'कुल अंक: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText रिकॉर्ड किया)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ उपलब्धि अनलॉक!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points अंक ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return 'चेक-इन सफल! +$points अंक ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 साप्ताहिक स्ट्रीक बोनस!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ नई उपलब्धि अनलॉक!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn =>
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
'आप आज पहले ही चेक-इन कर चुके हैं! कल वापस आएं 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'चेक-इन कैलेंडर 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 आज चेक-इन करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ आज चेक-इन हो गया';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 वर्तमान स्ट्रीक';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 सबसे लंबी स्ट्रीक';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => 'दिन';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count दिन';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => 'उपलब्धियाँ 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'सभी उपलब्धियाँ देखें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon =>
|
||||||
'Full achievements screen coming soon!';
|
'पूर्ण उपलब्धि स्क्रीन जल्द आ रही है!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'प्रोफ़ाइल';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => 'फोकस करने वाला';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return 'स्तर $level के लिए $points अंक';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => 'फोकस नौसिखिया';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc => 'अपना पहला फोकस सत्र पूरा करें';
|
||||||
'Complete your first focus session';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => 'शुरुआत';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc => '10 फोकस सत्र पूरे करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => 'फोकस उत्साही';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc => '50 फोकस सत्र पूरे करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => 'फोकस मास्टर';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc => '100 फोकस सत्र पूरे करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => 'ईमानदार ट्रैकर · कांस्य';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc =>
|
||||||
'Record 50 distractions honestly';
|
'ईमानदारी से 50 विकर्षण रिकॉर्ड करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => 'ईमानदार ट्रैकर · रजत';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc =>
|
||||||
'Record 200 distractions honestly';
|
'ईमानदारी से 200 विकर्षण रिकॉर्ड करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => 'ईमानदार ट्रैकर · स्वर्ण';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc =>
|
||||||
|
'ईमानदारी से 500 विकर्षण रिकॉर्ड करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'मैराथन धावक';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
|
String get achievement_marathon_desc => '10 घंटे का फोकस समय जमा करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'सेंचुरी क्लब';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
|
String get achievement_century_desc => '100 घंटे का फोकस समय जमा करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => 'फोकस ग्रैंडमास्टर';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
|
String get achievement_master_desc => '1000 घंटे का फोकस समय जमा करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => 'दृढ़ता का सितारा';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc =>
|
||||||
'Check in for 7 consecutive days';
|
'7 दिनों तक लगातार चेक-इन करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => 'मासिक आदत';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc => '30 दिनों तक लगातार चेक-इन करें';
|
||||||
'Check in for 30 consecutive days';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => 'सेंचुरियन';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
|
String get achievement_centurion_desc => '100 दिनों तक लगातार चेक-इन करें';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => 'वर्ष योद्धा';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
String get achievement_year_warrior_desc => '365 दिनों तक लगातार चेक-इन करें';
|
||||||
'Check in for 365 consecutive days';
|
|
||||||
|
@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 => 'श';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,190 +338,249 @@ class AppLocalizationsId extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => 'Poin';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'Level';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'Tercatat';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'Check-in';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => 'Diperoleh:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => 'Poin Dasar';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => 'Bonus Kejujuran';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return 'Total Poin: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText tercatat)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ Pencapaian Terbuka!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points Poin ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return 'Check-in berhasil! +$points poin ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 Bonus streak mingguan!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ Pencapaian baru terbuka!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn =>
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
'Anda sudah check-in hari ini! Kembali lagi besok 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'Kalender Check-In 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 Check-in Hari Ini';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ Sudah Check-in Hari Ini';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 Streak Saat Ini';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 Streak Terpanjang';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => 'hari';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count hari';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => 'Pencapaian 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'Lihat Semua Pencapaian';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon =>
|
||||||
'Full achievements screen coming soon!';
|
'Layar pencapaian lengkap segera hadir!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'Profil';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => 'Pemfokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return '$points poin menuju Level $level';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => 'Pemula Fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc =>
|
||||||
'Complete your first focus session';
|
'Selesaikan sesi fokus pertama Anda';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => 'Memulai';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc => 'Selesaikan 10 sesi fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => 'Penggemar Fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc => 'Selesaikan 50 sesi fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => 'Master Fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc => 'Selesaikan 100 sesi fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => 'Pelacak Jujur · Perunggu';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc => 'Catat 50 gangguan dengan jujur';
|
||||||
'Record 50 distractions honestly';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => 'Pelacak Jujur · Perak';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc =>
|
||||||
'Record 200 distractions honestly';
|
'Catat 200 gangguan dengan jujur';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => 'Pelacak Jujur · Emas';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc => 'Catat 500 gangguan dengan jujur';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'Pelari Maraton';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
|
String get achievement_marathon_desc => 'Kumpulkan 10 jam waktu fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'Klub Abad';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
|
String get achievement_century_desc => 'Kumpulkan 100 jam waktu fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => 'Grandmaster Fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
|
String get achievement_master_desc => 'Kumpulkan 1000 jam waktu fokus';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => 'Bintang Kegigihan';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc =>
|
||||||
'Check in for 7 consecutive days';
|
'Check-in selama 7 hari berturut-turut';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => 'Kebiasaan Bulanan';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc =>
|
||||||
'Check in for 30 consecutive days';
|
'Check-in selama 30 hari berturut-turut';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => 'Centurion';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => 'Pejuang Tahun';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
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';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -340,190 +340,258 @@ class AppLocalizationsIt extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => 'Punti';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'Livello';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'Registrato';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'Check-in';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => 'Guadagnato:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => 'Punti Base';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => 'Bonus Onestà';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return 'Punti Totali: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText registrate)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ Obiettivo Sbloccato!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points Punti ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return 'Check-in riuscito! +$points punti ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 Bonus serie settimanale!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ Nuovo obiettivo sbloccato!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn =>
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
'Hai già fatto il check-in oggi! Torna domani 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'Calendario Check-In 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 Check-in Oggi';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ Check-in Fatto Oggi';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 Serie Attuale';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 Serie Più Lunga';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => 'giorni';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count giorni';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => 'Obiettivi 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'Vedi Tutti gli Obiettivi';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon =>
|
||||||
'Full achievements screen coming soon!';
|
'Schermata completa degli obiettivi in arrivo!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'Profilo';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => 'Concentratore';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return '$points punti al Livello $level';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name =>
|
||||||
|
'Principiante della Concentrazione';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc =>
|
||||||
'Complete your first focus session';
|
'Completa la tua prima sessione di concentrazione';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => 'Inizio';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc =>
|
||||||
|
'Completa 10 sessioni di concentrazione';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => 'Appassionato di Concentrazione';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc =>
|
||||||
|
'Completa 50 sessioni di concentrazione';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => 'Maestro della Concentrazione';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc =>
|
||||||
|
'Completa 100 sessioni di concentrazione';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => 'Tracker Onesto · Bronzo';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc =>
|
||||||
'Record 50 distractions honestly';
|
'Registra onestamente 50 distrazioni';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => 'Tracker Onesto · Argento';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc =>
|
||||||
'Record 200 distractions honestly';
|
'Registra onestamente 200 distrazioni';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => 'Tracker Onesto · Oro';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc =>
|
||||||
|
'Registra onestamente 500 distrazioni';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'Maratoneta';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'Club del Secolo';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => 'Gran Maestro della Concentrazione';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => 'Stella della Persistenza';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc =>
|
||||||
'Check in for 7 consecutive days';
|
'Fai il check-in per 7 giorni consecutivi';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => 'Abitudine Mensile';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc =>
|
||||||
'Check in for 30 consecutive days';
|
'Fai il check-in per 30 giorni consecutivi';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => 'Centurione';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => 'Guerriero dell\'Anno';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
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';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -331,190 +331,241 @@ class AppLocalizationsJa extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => 'ポイント';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'レベル';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'チェック済み';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'チェックイン';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => '獲得:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => '基本ポイント';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => '正直ボーナス';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return '合計ポイント:$count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText 記録済み)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ 実績解除!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points ポイント ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return 'チェックイン成功!+$points ポイント ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 1週間連続ボーナス!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ 新しい実績解除!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn => '今日は既にチェックイン済みです!明日また来てください 📅';
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'チェックインカレンダー 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 今日チェックイン';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ 今日チェックイン済み';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 現在の連続';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 最長連続';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => '日';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count 日';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => '実績 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'すべての実績を見る';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon => '完全な実績画面は近日公開!';
|
||||||
'Full achievements screen coming soon!';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'プロフィール';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => '集中する人';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return 'レベル $level まであと $points ポイント';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => '集中初心者';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc => '最初の集中セッションを完了';
|
||||||
'Complete your first focus session';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => '入門者';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc => '10回の集中セッションを完了';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => '集中愛好家';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc => '50回の集中セッションを完了';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => '集中マスター';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc => '100回の集中セッションを完了';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => '正直な記録者・ブロンズ';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc => '50回の気の散りを正直に記録';
|
||||||
'Record 50 distractions honestly';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => '正直な記録者・シルバー';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc => '200回の気の散りを正直に記録';
|
||||||
'Record 200 distractions honestly';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => '正直な記録者・ゴールド';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc => '500回の気の散りを正直に記録';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'マラソンランナー';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
|
String get achievement_marathon_desc => '10時間の集中時間を累積';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'センチュリークラブ';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
|
String get achievement_century_desc => '100時間の集中時間を累積';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => '集中グランドマスター';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
|
String get achievement_master_desc => '1000時間の集中時間を累積';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => '継続の星';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc => '7日間連続でチェックイン';
|
||||||
'Check in for 7 consecutive days';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => '月間習慣';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc => '30日間連続でチェックイン';
|
||||||
'Check in for 30 consecutive days';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => '百日戦士';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
|
String get achievement_centurion_desc => '100日間連続でチェックイン';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => '年間戦士';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
String get achievement_year_warrior_desc => '365日間連続でチェックイン';
|
||||||
'Check in for 365 consecutive days';
|
|
||||||
|
@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 => '土';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -332,190 +332,241 @@ class AppLocalizationsKo extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => '포인트';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => '레벨';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => '체크 완료';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => '체크인';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => '획득:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => '기본 포인트';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => '정직 보너스';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return '총 포인트: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText 기록됨)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ 업적 달성!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points 포인트 ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return '체크인 성공! +$points 포인트 ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 주간 연속 보너스!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ 새로운 업적 달성!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn => '오늘 이미 체크인했어요! 내일 다시 오세요 📅';
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => '체크인 캘린더 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 오늘 체크인';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ 오늘 체크인 완료';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 현재 연속';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 최장 연속';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => '일';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count 일';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => '업적 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => '모든 업적 보기';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon => '전체 업적 화면 곧 공개!';
|
||||||
'Full achievements screen coming soon!';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => '프로필';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => '집중하는 사람';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return '레벨 $level까지 $points 포인트 남음';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => '집중 초보자';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc => '첫 집중 세션 완료';
|
||||||
'Complete your first focus session';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => '시작 단계';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc => '10회 집중 세션 완료';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => '집중 애호가';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc => '50회 집중 세션 완료';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => '집중 마스터';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc => '100회 집중 세션 완료';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => '정직한 기록자 · 브론즈';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc => '50회 산만함을 정직하게 기록';
|
||||||
'Record 50 distractions honestly';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => '정직한 기록자 · 실버';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc => '200회 산만함을 정직하게 기록';
|
||||||
'Record 200 distractions honestly';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => '정직한 기록자 · 골드';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc => '500회 산만함을 정직하게 기록';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => '마라톤 러너';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
|
String get achievement_marathon_desc => '누적 10시간 집중';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => '센추리 클럽';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
|
String get achievement_century_desc => '누적 100시간 집중';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => '집중 그랜드마스터';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
|
String get achievement_master_desc => '누적 1000시간 집중';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => '끈기의 별';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc => '7일 연속 체크인';
|
||||||
'Check in for 7 consecutive days';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => '월간 습관';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc => '30일 연속 체크인';
|
||||||
'Check in for 30 consecutive days';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => '백일 전사';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
|
String get achievement_centurion_desc => '100일 연속 체크인';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => '연간 전사';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
String get achievement_year_warrior_desc => '365일 연속 체크인';
|
||||||
'Check in for 365 consecutive days';
|
|
||||||
|
@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 => '토';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -337,190 +337,250 @@ class AppLocalizationsPt extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => 'Pontos';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'Nível';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'Verificado';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'Check-in';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => 'Ganhou:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => 'Pontos base';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => 'Bônus de honestidade';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return 'Total de pontos: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText registradas)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ Conquista desbloqueada!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points Pontos ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return 'Check-in bem-sucedido! +$points pontos ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 Bônus de sequência semanal!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ Nova conquista desbloqueada!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn => 'Você já fez check-in hoje! Volte amanhã 📅';
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'Calendário de check-in 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 Fazer check-in hoje';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ Check-in feito hoje';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 Sequência atual';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 Maior sequência';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => 'dias';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count dias';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => 'Conquistas 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'Ver todas as conquistas';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon =>
|
||||||
'Full achievements screen coming soon!';
|
'Tela completa de conquistas em breve!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'Perfil';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => 'Focador';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return '$points pontos até o nível $level';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => 'Novato em foco';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc =>
|
||||||
'Complete your first focus session';
|
'Complete sua primeira sessão de foco';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => 'Começando';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc => 'Complete 10 sessões de foco';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => 'Entusiasta do foco';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc => 'Complete 50 sessões de foco';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => 'Mestre do foco';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc => 'Complete 100 sessões de foco';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => 'Rastreador honesto · Bronze';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc =>
|
||||||
'Record 50 distractions honestly';
|
'Registre 50 distrações honestamente';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => 'Rastreador honesto · Prata';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc =>
|
||||||
'Record 200 distractions honestly';
|
'Registre 200 distrações honestamente';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => 'Rastreador honesto · Ouro';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc =>
|
||||||
|
'Registre 500 distrações honestamente';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'Corredor de maratona';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'Clube do século';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => 'Grão-mestre do foco';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => 'Estrela da persistência';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc =>
|
||||||
'Check in for 7 consecutive days';
|
'Faça check-in por 7 dias consecutivos';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => 'Hábito mensal';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc =>
|
||||||
'Check in for 30 consecutive days';
|
'Faça check-in por 30 dias consecutivos';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => 'Centurião';
|
||||||
|
|
||||||
@override
|
@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
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => 'Guerreiro do ano';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
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';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -343,190 +343,247 @@ class AppLocalizationsRu extends AppLocalizations {
|
|||||||
String get arabic => 'العربية';
|
String get arabic => 'العربية';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get points => 'Points';
|
String get points => 'Очки';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get level => 'Level';
|
String get level => 'Уровень';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checked => 'Checked';
|
String get checked => 'Отмечено';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkIn => 'Check In';
|
String get checkIn => 'Отметиться';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get earnedPoints => 'Earned:';
|
String get earnedPoints => 'Получено:';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get basePoints => 'Base Points';
|
String get basePoints => 'Базовые очки';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get honestyBonus => 'Honesty Bonus';
|
String get honestyBonus => 'Бонус за честность';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String totalPoints(int count) {
|
String totalPoints(int count) {
|
||||||
return 'Total Points: $count ⚡';
|
return 'Всего очков: $count ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String distractionsRecorded(int count, Object distractionText) {
|
String distractionsRecorded(int count, Object distractionText) {
|
||||||
return '($count $distractionText recorded)';
|
return '($count $distractionText записано)';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievementUnlocked => '🎖️ Achievement Unlocked!';
|
String get achievementUnlocked => '🎖️ Достижение разблокировано!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String bonusPoints(int points) {
|
String bonusPoints(int points) {
|
||||||
return '+$points Points ⚡';
|
return '+$points очков ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String checkInSuccess(int points) {
|
String checkInSuccess(int points) {
|
||||||
return 'Check-in successful! +$points points ⚡';
|
return 'Отметка успешна! +$points очков ⚡';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get weeklyStreakBonus => '🎉 Weekly streak bonus!';
|
String get weeklyStreakBonus => '🎉 Бонус за недельную серию!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get newAchievementUnlocked => '🎖️ New achievement unlocked!';
|
String get newAchievementUnlocked => '🎖️ Новое достижение разблокировано!';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get alreadyCheckedIn =>
|
String get alreadyCheckedIn =>
|
||||||
'You have already checked in today! Come back tomorrow 📅';
|
'Вы уже отметились сегодня! Приходите завтра 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInCalendar => 'Check-In Calendar 📅';
|
String get checkInCalendar => 'Календарь отметок 📅';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkInToday => '📅 Check In Today';
|
String get checkInToday => '📅 Отметиться сегодня';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get checkedInToday => '✓ Checked In Today';
|
String get checkedInToday => '✓ Отмечен сегодня';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get currentStreak => '🔥 Current Streak';
|
String get currentStreak => '🔥 Текущая серия';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get longestStreak => '🏆 Longest Streak';
|
String get longestStreak => '🏆 Самая длинная серия';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get days => 'days';
|
String get days => 'дней';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String daysCount(int count) {
|
String daysCount(int count) {
|
||||||
return '$count days';
|
return '$count дней';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievements => 'Achievements 🎖️';
|
String get achievements => 'Достижения 🎖️';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get viewAllAchievements => 'View All Achievements';
|
String get viewAllAchievements => 'Посмотреть все достижения';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get allAchievementsComingSoon =>
|
String get allAchievementsComingSoon => 'Полный экран достижений скоро!';
|
||||||
'Full achievements screen coming soon!';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get profile => 'Profile';
|
String get profile => 'Профиль';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get focuser => 'Focuser';
|
String get focuser => 'Сосредоточенный';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String pointsToNextLevel(int points, int level) {
|
String pointsToNextLevel(int points, int level) {
|
||||||
return '$points points to Level $level';
|
return '$points очков до уровня $level';
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_name => 'Focus Newbie';
|
String get achievement_first_session_name => 'Новичок фокуса';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_first_session_desc =>
|
String get achievement_first_session_desc =>
|
||||||
'Complete your first focus session';
|
'Завершите первую сессию фокусировки';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_name => 'Getting Started';
|
String get achievement_sessions_10_name => 'Начало';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_10_desc => 'Complete 10 focus sessions';
|
String get achievement_sessions_10_desc => 'Завершите 10 сессий фокусировки';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_name => 'Focus Enthusiast';
|
String get achievement_sessions_50_name => 'Энтузиаст фокуса';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_50_desc => 'Complete 50 focus sessions';
|
String get achievement_sessions_50_desc => 'Завершите 50 сессий фокусировки';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_name => 'Focus Master';
|
String get achievement_sessions_100_name => 'Мастер фокуса';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_sessions_100_desc => 'Complete 100 focus sessions';
|
String get achievement_sessions_100_desc =>
|
||||||
|
'Завершите 100 сессий фокусировки';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_name => 'Honest Tracker · Bronze';
|
String get achievement_honest_bronze_name => 'Честный трекер · Бронза';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_bronze_desc =>
|
String get achievement_honest_bronze_desc => 'Честно запишите 50 отвлечений';
|
||||||
'Record 50 distractions honestly';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_name => 'Honest Tracker · Silver';
|
String get achievement_honest_silver_name => 'Честный трекер · Серебро';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_silver_desc =>
|
String get achievement_honest_silver_desc => 'Честно запишите 200 отвлечений';
|
||||||
'Record 200 distractions honestly';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_name => 'Honest Tracker · Gold';
|
String get achievement_honest_gold_name => 'Честный трекер · Золото';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_honest_gold_desc => 'Record 500 distractions honestly';
|
String get achievement_honest_gold_desc => 'Честно запишите 500 отвлечений';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_name => 'Marathon Runner';
|
String get achievement_marathon_name => 'Марафонец';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_marathon_desc => 'Accumulate 10 hours of focus time';
|
String get achievement_marathon_desc =>
|
||||||
|
'Накопите 10 часов времени фокусировки';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_name => 'Century Club';
|
String get achievement_century_name => 'Клуб столетия';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_century_desc => 'Accumulate 100 hours of focus time';
|
String get achievement_century_desc =>
|
||||||
|
'Накопите 100 часов времени фокусировки';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_name => 'Focus Grandmaster';
|
String get achievement_master_name => 'Гроссмейстер фокуса';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_master_desc => 'Accumulate 1000 hours of focus time';
|
String get achievement_master_desc =>
|
||||||
|
'Накопите 1000 часов времени фокусировки';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_name => 'Persistence Star';
|
String get achievement_persistence_star_name => 'Звезда упорства';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_persistence_star_desc =>
|
String get achievement_persistence_star_desc => 'Отмечайтесь 7 дней подряд';
|
||||||
'Check in for 7 consecutive days';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_name => 'Monthly Habit';
|
String get achievement_monthly_habit_name => 'Месячная привычка';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_monthly_habit_desc =>
|
String get achievement_monthly_habit_desc => 'Отмечайтесь 30 дней подряд';
|
||||||
'Check in for 30 consecutive days';
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_name => 'Centurion';
|
String get achievement_centurion_name => 'Центурион';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_centurion_desc => 'Check in for 100 consecutive days';
|
String get achievement_centurion_desc => 'Отмечайтесь 100 дней подряд';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_name => 'Year Warrior';
|
String get achievement_year_warrior_name => 'Воин года';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc =>
|
String get achievement_year_warrior_desc => 'Отмечайтесь 365 дней подряд';
|
||||||
'Check in for 365 consecutive days';
|
|
||||||
|
@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 => 'С';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -506,4 +506,63 @@ class AppLocalizationsZh extends AppLocalizations {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
String get achievement_year_warrior_desc => '连续签到 365 天';
|
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 => '六';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,5 +121,84 @@
|
|||||||
"hindi": "हिन्दी",
|
"hindi": "हिन्दी",
|
||||||
"indonesian": "Bahasa Indonesia",
|
"indonesian": "Bahasa Indonesia",
|
||||||
"italian": "Italiano",
|
"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": "С"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -179,5 +179,26 @@
|
|||||||
"achievement_centurion_name": "百日勇士",
|
"achievement_centurion_name": "百日勇士",
|
||||||
"achievement_centurion_desc": "连续签到 100 天",
|
"achievement_centurion_desc": "连续签到 100 天",
|
||||||
"achievement_year_warrior_name": "年度战士",
|
"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": "六"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ class _HistoryScreenState extends State<HistoryScreen> {
|
|||||||
const SizedBox(height: 32),
|
const SizedBox(height: 32),
|
||||||
ElevatedButton(
|
ElevatedButton(
|
||||||
onPressed: () => Navigator.pop(context),
|
onPressed: () => Navigator.pop(context),
|
||||||
child: const Text('Start Focusing'),
|
child: Text(l10n.startFocusing),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -159,7 +159,7 @@ class _HistoryScreenState extends State<HistoryScreen> {
|
|||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: _buildStat(
|
child: _buildStat(
|
||||||
'Total',
|
l10n.total,
|
||||||
l10n.minutesValue(totalMins, l10n.minutes(totalMins)),
|
l10n.minutesValue(totalMins, l10n.minutes(totalMins)),
|
||||||
'⏱️',
|
'⏱️',
|
||||||
),
|
),
|
||||||
@@ -167,7 +167,7 @@ class _HistoryScreenState extends State<HistoryScreen> {
|
|||||||
const SizedBox(width: 16),
|
const SizedBox(width: 16),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: _buildStat(
|
child: _buildStat(
|
||||||
'Distractions',
|
l10n.distractions(distractions),
|
||||||
l10n.distractionsCount(
|
l10n.distractionsCount(
|
||||||
distractions,
|
distractions,
|
||||||
l10n.times(distractions),
|
l10n.times(distractions),
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../l10n/app_localizations.dart';
|
import '../l10n/app_localizations.dart';
|
||||||
import '../theme/app_colors.dart';
|
import '../theme/app_colors.dart';
|
||||||
|
import '../theme/app_constants.dart';
|
||||||
import '../services/storage_service.dart';
|
import '../services/storage_service.dart';
|
||||||
import '../services/points_service.dart';
|
import '../services/points_service.dart';
|
||||||
import '../services/achievement_service.dart';
|
import '../services/achievement_service.dart';
|
||||||
@@ -418,14 +419,14 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
|
|
||||||
// Calendar grid (last 28 days)
|
// Calendar grid (last 28 days)
|
||||||
_buildCalendarGrid(),
|
_buildCalendarGrid(l10n),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Build calendar grid showing check-in history
|
/// Build calendar grid showing check-in history
|
||||||
Widget _buildCalendarGrid() {
|
Widget _buildCalendarGrid(AppLocalizations l10n) {
|
||||||
final now = DateTime.now();
|
final now = DateTime.now();
|
||||||
final today = DateTime(now.year, now.month, now.day);
|
final today = DateTime(now.year, now.month, now.day);
|
||||||
|
|
||||||
@@ -434,16 +435,24 @@ class _ProfileScreenState extends State<ProfileScreen> {
|
|||||||
// Weekday labels
|
// Weekday labels
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
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(
|
.map(
|
||||||
(day) => SizedBox(
|
(day) => SizedBox(
|
||||||
width: 40,
|
width: ProfileConstants.calendarCellSize,
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text(
|
child: Text(
|
||||||
day,
|
day,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'Nunito',
|
fontFamily: 'Nunito',
|
||||||
fontSize: 12,
|
fontSize: FontSizes.caption,
|
||||||
fontWeight: FontWeight.w600,
|
fontWeight: FontWeight.w600,
|
||||||
color: AppColors.textSecondary,
|
color: AppColors.textSecondary,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ class SessionDetailScreen extends StatelessWidget {
|
|||||||
|
|
||||||
_buildStatRow(
|
_buildStatRow(
|
||||||
icon: '🤚',
|
icon: '🤚',
|
||||||
label: 'Distractions',
|
label: l10n.distractions(session.distractionCount),
|
||||||
value:
|
value:
|
||||||
'${session.distractionCount} ${l10n.times(session.distractionCount)}',
|
'${session.distractionCount} ${l10n.times(session.distractionCount)}',
|
||||||
),
|
),
|
||||||
@@ -123,7 +123,7 @@ class SessionDetailScreen extends StatelessWidget {
|
|||||||
|
|
||||||
_buildStatRow(
|
_buildStatRow(
|
||||||
icon: '🏁',
|
icon: '🏁',
|
||||||
label: 'Status',
|
label: l10n.status,
|
||||||
value: session.completed
|
value: session.completed
|
||||||
? l10n.completed
|
? l10n.completed
|
||||||
: l10n.stoppedEarly,
|
: l10n.stoppedEarly,
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import '../models/user_progress.dart';
|
|||||||
class PointsService {
|
class PointsService {
|
||||||
/// Calculate points earned from a focus session
|
/// Calculate points earned from a focus session
|
||||||
/// Returns a map with breakdown: {basePoints, honestyBonus, total, breakdown}
|
/// Returns a map with breakdown: {basePoints, honestyBonus, total, breakdown}
|
||||||
|
/// Note: breakdown contains labelKey and descriptionKey for localization
|
||||||
Map<String, dynamic> calculateSessionPoints(FocusSession session) {
|
Map<String, dynamic> calculateSessionPoints(FocusSession session) {
|
||||||
// Base points = actual minutes focused
|
// Base points = actual minutes focused
|
||||||
int basePoints = session.actualMinutes;
|
int basePoints = session.actualMinutes;
|
||||||
@@ -18,17 +19,17 @@ class PointsService {
|
|||||||
|
|
||||||
int total = basePoints + honestyBonus;
|
int total = basePoints + honestyBonus;
|
||||||
|
|
||||||
// Detailed breakdown for UI display
|
// Detailed breakdown for UI display (using localization keys)
|
||||||
List<Map<String, dynamic>> breakdown = [
|
List<Map<String, dynamic>> breakdown = [
|
||||||
{
|
{
|
||||||
'label': '专注时长',
|
'labelKey': 'focusTimePoints',
|
||||||
'value': basePoints,
|
'value': basePoints,
|
||||||
'description': '每专注1分钟获得1积分',
|
'descriptionKey': 'focusTimePointsDesc',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'label': '诚实奖励',
|
'labelKey': 'honestyBonusLabel',
|
||||||
'value': honestyBonus,
|
'value': honestyBonus,
|
||||||
'description': '记录分心情况获得额外积分',
|
'descriptionKey': 'honestyBonusDesc',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -56,6 +57,7 @@ class PointsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Process daily check-in and return points earned with detailed breakdown
|
/// 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) {
|
Map<String, dynamic> processCheckIn(UserProgress progress) {
|
||||||
final now = DateTime.now();
|
final now = DateTime.now();
|
||||||
|
|
||||||
@@ -63,9 +65,9 @@ class PointsService {
|
|||||||
int points = 5;
|
int points = 5;
|
||||||
List<Map<String, dynamic>> breakdown = [
|
List<Map<String, dynamic>> breakdown = [
|
||||||
{
|
{
|
||||||
'label': '每日签到',
|
'labelKey': 'checkInPoints',
|
||||||
'value': 5,
|
'value': 5,
|
||||||
'description': '每日首次签到获得基础积分',
|
'descriptionKey': 'checkInPointsDesc',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -78,17 +80,19 @@ class PointsService {
|
|||||||
int weeklyBonus = 30;
|
int weeklyBonus = 30;
|
||||||
points += weeklyBonus;
|
points += weeklyBonus;
|
||||||
breakdown.add({
|
breakdown.add({
|
||||||
'label': '连续签到奖励',
|
'labelKey': 'streakBonus',
|
||||||
'value': weeklyBonus,
|
'value': weeklyBonus,
|
||||||
'description': '连续签到${progress.consecutiveCheckIns}天',
|
'descriptionKey': 'streakBonusDesc',
|
||||||
|
'descriptionParams': {'days': progress.consecutiveCheckIns},
|
||||||
});
|
});
|
||||||
} else if (progress.consecutiveCheckIns % 30 == 0) {
|
} else if (progress.consecutiveCheckIns % 30 == 0) {
|
||||||
int monthlyBonus = 100;
|
int monthlyBonus = 100;
|
||||||
points += monthlyBonus;
|
points += monthlyBonus;
|
||||||
breakdown.add({
|
breakdown.add({
|
||||||
'label': '连续签到奖励',
|
'labelKey': 'streakBonus',
|
||||||
'value': monthlyBonus,
|
'value': monthlyBonus,
|
||||||
'description': '连续签到${progress.consecutiveCheckIns}天',
|
'descriptionKey': 'streakBonusDesc',
|
||||||
|
'descriptionParams': {'days': progress.consecutiveCheckIns},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
169
lib/theme/app_constants.dart
Normal file
169
lib/theme/app_constants.dart
Normal 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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user