From 86a368e1e32513a03945e06a2271f6bf50690b8e Mon Sep 17 00:00:00 2001 From: ytc1012 <18001193130@163.com> Date: Tue, 2 Dec 2025 16:38:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/settings.local.json | 14 +- android/app/build.gradle.kts | 23 +++- lib/l10n/app_ar.arb | 81 ++++++++++- lib/l10n/app_de.arb | 81 ++++++++++- lib/l10n/app_en.arb | 100 ++++++++++++++ lib/l10n/app_es.arb | 81 ++++++++++- lib/l10n/app_fr.arb | 81 ++++++++++- lib/l10n/app_hi.arb | 81 ++++++++++- lib/l10n/app_id.arb | 81 ++++++++++- lib/l10n/app_it.arb | 81 ++++++++++- lib/l10n/app_ja.arb | 81 ++++++++++- lib/l10n/app_ko.arb | 81 ++++++++++- lib/l10n/app_localizations.dart | 114 ++++++++++++++++ lib/l10n/app_localizations_ar.dart | 176 +++++++++++++++--------- lib/l10n/app_localizations_de.dart | 174 ++++++++++++++++-------- lib/l10n/app_localizations_en.dart | 59 ++++++++ lib/l10n/app_localizations_es.dart | 178 ++++++++++++++++-------- lib/l10n/app_localizations_fr.dart | 175 ++++++++++++++++-------- lib/l10n/app_localizations_hi.dart | 175 ++++++++++++++++-------- lib/l10n/app_localizations_id.dart | 169 +++++++++++++++-------- lib/l10n/app_localizations_it.dart | 180 ++++++++++++++++-------- lib/l10n/app_localizations_ja.dart | 179 +++++++++++++++--------- lib/l10n/app_localizations_ko.dart | 179 +++++++++++++++--------- lib/l10n/app_localizations_pt.dart | 174 ++++++++++++++++-------- lib/l10n/app_localizations_ru.dart | 181 ++++++++++++++++--------- lib/l10n/app_localizations_zh.dart | 59 ++++++++ lib/l10n/app_pt.arb | 81 ++++++++++- lib/l10n/app_ru.arb | 81 ++++++++++- lib/l10n/app_zh.arb | 23 +++- lib/screens/history_screen.dart | 6 +- lib/screens/profile_screen.dart | 21 ++- lib/screens/session_detail_screen.dart | 4 +- lib/services/points_service.dart | 30 ++-- lib/theme/app_constants.dart | 169 +++++++++++++++++++++++ 34 files changed, 2767 insertions(+), 686 deletions(-) create mode 100644 lib/theme/app_constants.dart diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 8772292..b81bf01 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -50,7 +50,19 @@ "Bash(then find android/app/build/outputs -type f ( -name \"*.aab\" -o -name \"*.apk\" ))", "Bash(else echo \"outputs 目录不存在,可能还未构建过\")", "Bash(fi)", - "Bash(tasklist:*)" + "Bash(tasklist:*)", + "Bash(flutter pub outdated:*)", + "Bash(find:*)", + "Bash(java:*)", + "Bash(mkdir:*)", + "Bash(keytool:*)", + "Bash(call android\\gradlew.bat:*)", + "Bash(./android/gradlew.bat:*)", + "Bash(\"F:\\Program Files\\Eclipse Adoptium\\jdk-17.0.17.10-hotspot\\bin\\keytool.exe\":*)", + "Bash(\"F:\\Program Files\\Eclipse Adoptium\\jdk-17.0.17.10-hotspot\\bin\\jarsigner.exe\":*)", + "Bash(del:*)", + "Bash(rm:*)", + "Bash(git add:*)" ], "deny": [], "ask": [] diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index d27925c..96b5ea2 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -1,3 +1,6 @@ +import java.util.Properties +import java.io.FileInputStream + plugins { id("com.android.application") id("kotlin-android") @@ -5,6 +8,13 @@ plugins { id("dev.flutter.flutter-gradle-plugin") } +// Load keystore properties +val keystorePropertiesFile = rootProject.file("key.properties") +val keystoreProperties = Properties() +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(FileInputStream(keystorePropertiesFile)) +} + android { namespace = "com.focusbuddy.focus_buddy" compileSdk = flutter.compileSdkVersion @@ -31,11 +41,18 @@ android { versionName = flutter.versionName } + signingConfigs { + create("release") { + keyAlias = keystoreProperties.getProperty("keyAlias") + keyPassword = keystoreProperties.getProperty("keyPassword") + storeFile = keystoreProperties.getProperty("storeFile")?.let { rootProject.file(it) } + storePassword = keystoreProperties.getProperty("storePassword") + } + } + buildTypes { release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig = signingConfigs.getByName("debug") + signingConfig = signingConfigs.getByName("release") } } } diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index af58def..99d8f32 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "النقاط", + "level": "المستوى", + "checked": "تم التسجيل", + "checkIn": "تسجيل الحضور", + "earnedPoints": "المكتسب:", + "basePoints": "النقاط الأساسية", + "honestyBonus": "مكافأة الصدق", + "totalPoints": "إجمالي النقاط: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} مسجلة)", + "achievementUnlocked": "🎖️ إنجاز مفتوح!", + "bonusPoints": "+{points} نقاط ⚡", + "checkInSuccess": "تسجيل الحضور ناجح! +{points} نقاط ⚡", + "weeklyStreakBonus": "🎉 مكافأة السلسلة الأسبوعية!", + "newAchievementUnlocked": "🎖️ إنجاز جديد مفتوح!", + "alreadyCheckedIn": "لقد سجلت حضورك اليوم بالفعل! عد غدًا 📅", + "checkInCalendar": "تقويم تسجيل الحضور 📅", + "checkInToday": "📅 سجل الحضور اليوم", + "checkedInToday": "✓ تم التسجيل اليوم", + "currentStreak": "🔥 السلسلة الحالية", + "longestStreak": "🏆 أطول سلسلة", + "days": "أيام", + "daysCount": "{count} أيام", + "achievements": "الإنجازات 🎖️", + "viewAllAchievements": "عرض جميع الإنجازات", + "allAchievementsComingSoon": "شاشة الإنجازات الكاملة قريبًا!", + "profile": "الملف الشخصي", + "focuser": "المركز", + "pointsToNextLevel": "{points} نقاط إلى المستوى {level}", + + "achievement_first_session_name": "مبتدئ التركيز", + "achievement_first_session_desc": "أكمل جلسة التركيز الأولى", + "achievement_sessions_10_name": "البداية", + "achievement_sessions_10_desc": "أكمل 10 جلسات تركيز", + "achievement_sessions_50_name": "عاشق التركيز", + "achievement_sessions_50_desc": "أكمل 50 جلسة تركيز", + "achievement_sessions_100_name": "سيد التركيز", + "achievement_sessions_100_desc": "أكمل 100 جلسة تركيز", + "achievement_honest_bronze_name": "المتتبع الصادق · برونزي", + "achievement_honest_bronze_desc": "سجل 50 تشتتًا بصدق", + "achievement_honest_silver_name": "المتتبع الصادق · فضي", + "achievement_honest_silver_desc": "سجل 200 تشتت بصدق", + "achievement_honest_gold_name": "المتتبع الصادق · ذهبي", + "achievement_honest_gold_desc": "سجل 500 تشتت بصدق", + "achievement_marathon_name": "عداء الماراثون", + "achievement_marathon_desc": "اجمع 10 ساعات من وقت التركيز", + "achievement_century_name": "نادي القرن", + "achievement_century_desc": "اجمع 100 ساعة من وقت التركيز", + "achievement_master_name": "جراند ماستر التركيز", + "achievement_master_desc": "اجمع 1000 ساعة من وقت التركيز", + "achievement_persistence_star_name": "نجمة المثابرة", + "achievement_persistence_star_desc": "سجل الحضور لمدة 7 أيام متتالية", + "achievement_monthly_habit_name": "العادة الشهرية", + "achievement_monthly_habit_desc": "سجل الحضور لمدة 30 يومًا متتاليًا", + "achievement_centurion_name": "المئوي", + "achievement_centurion_desc": "سجل الحضور لمدة 100 يوم متتالٍ", + "achievement_year_warrior_name": "محارب العام", + "achievement_year_warrior_desc": "سجل الحضور لمدة 365 يومًا متتاليًا", + + "total": "الإجمالي", + "status": "الحالة", + "pointsBreakdown": "تفصيل النقاط", + "focusTimePoints": "وقت التركيز", + "focusTimePointsDesc": "نقطة واحدة لكل دقيقة تركيز", + "honestyBonusLabel": "مكافأة الصدق", + "honestyBonusDesc": "نقاط إضافية لتسجيل التشتتات", + "checkInPoints": "تسجيل الحضور اليومي", + "checkInPointsDesc": "النقاط الأساسية لتسجيل الحضور اليومي", + "streakBonus": "مكافأة السلسلة", + "streakBonusDesc": "{days} تسجيلات حضور متتالية", + "achievementBonusLabel": "مكافأة الإنجاز", + + "weekdayS": "ح", + "weekdayM": "ن", + "weekdayT": "ث", + "weekdayW": "ر", + "weekdayTh": "خ", + "weekdayF": "ج", + "weekdaySa": "س" } diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index f4b488d..89fa999 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "Punkte", + "level": "Level", + "checked": "Geprüft", + "checkIn": "Einchecken", + "earnedPoints": "Verdient:", + "basePoints": "Basispunkte", + "honestyBonus": "Ehrlichkeitsbonus", + "totalPoints": "Gesamt Punkte: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} aufgezeichnet)", + "achievementUnlocked": "🎖️ Erfolg freigeschaltet!", + "bonusPoints": "+{points} Punkte ⚡", + "checkInSuccess": "Check-in erfolgreich! +{points} Punkte ⚡", + "weeklyStreakBonus": "🎉 Wöchentlicher Streak-Bonus!", + "newAchievementUnlocked": "🎖️ Neuer Erfolg freigeschaltet!", + "alreadyCheckedIn": "Du hast heute bereits eingecheckt! Komm morgen wieder 📅", + "checkInCalendar": "Check-in-Kalender 📅", + "checkInToday": "📅 Heute einchecken", + "checkedInToday": "✓ Heute eingecheckt", + "currentStreak": "🔥 Aktueller Streak", + "longestStreak": "🏆 Längster Streak", + "days": "Tage", + "daysCount": "{count} Tage", + "achievements": "Erfolge 🎖️", + "viewAllAchievements": "Alle Erfolge anzeigen", + "allAchievementsComingSoon": "Vollständiger Erfolge-Bildschirm kommt bald!", + "profile": "Profil", + "focuser": "Fokussierer", + "pointsToNextLevel": "{points} Punkte bis Level {level}", + + "achievement_first_session_name": "Fokus-Neuling", + "achievement_first_session_desc": "Schließe deine erste Fokussitzung ab", + "achievement_sessions_10_name": "Erste Schritte", + "achievement_sessions_10_desc": "Schließe 10 Fokussitzungen ab", + "achievement_sessions_50_name": "Fokus-Enthusiast", + "achievement_sessions_50_desc": "Schließe 50 Fokussitzungen ab", + "achievement_sessions_100_name": "Fokus-Meister", + "achievement_sessions_100_desc": "Schließe 100 Fokussitzungen ab", + "achievement_honest_bronze_name": "Ehrlicher Tracker · Bronze", + "achievement_honest_bronze_desc": "Zeichne 50 Ablenkungen ehrlich auf", + "achievement_honest_silver_name": "Ehrlicher Tracker · Silber", + "achievement_honest_silver_desc": "Zeichne 200 Ablenkungen ehrlich auf", + "achievement_honest_gold_name": "Ehrlicher Tracker · Gold", + "achievement_honest_gold_desc": "Zeichne 500 Ablenkungen ehrlich auf", + "achievement_marathon_name": "Marathon-Läufer", + "achievement_marathon_desc": "Sammle 10 Stunden Fokuszeit", + "achievement_century_name": "Jahrhundert-Club", + "achievement_century_desc": "Sammle 100 Stunden Fokuszeit", + "achievement_master_name": "Fokus-Großmeister", + "achievement_master_desc": "Sammle 1000 Stunden Fokuszeit", + "achievement_persistence_star_name": "Beharrlichkeitsstern", + "achievement_persistence_star_desc": "Checke 7 Tage in Folge ein", + "achievement_monthly_habit_name": "Monatliche Gewohnheit", + "achievement_monthly_habit_desc": "Checke 30 Tage in Folge ein", + "achievement_centurion_name": "Zenturio", + "achievement_centurion_desc": "Checke 100 Tage in Folge ein", + "achievement_year_warrior_name": "Jahreskrieger", + "achievement_year_warrior_desc": "Checke 365 Tage in Folge ein", + + "total": "Gesamt", + "status": "Status", + "pointsBreakdown": "Punkteaufschlüsselung", + "focusTimePoints": "Fokuszeit", + "focusTimePointsDesc": "1 Punkt pro Minute Fokus", + "honestyBonusLabel": "Ehrlichkeitsbonus", + "honestyBonusDesc": "Extrapunkte für das Aufzeichnen von Ablenkungen", + "checkInPoints": "Täglicher Check-in", + "checkInPointsDesc": "Basispunkte für täglichen Check-in", + "streakBonus": "Streak-Bonus", + "streakBonusDesc": "{days} aufeinanderfolgende Check-ins", + "achievementBonusLabel": "Erfolgsbonus", + + "weekdayS": "S", + "weekdayM": "M", + "weekdayT": "D", + "weekdayW": "M", + "weekdayTh": "D", + "weekdayF": "F", + "weekdaySa": "S" } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index f1e1fce..2232654 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -531,5 +531,105 @@ "achievement_year_warrior_desc": "Check in for 365 consecutive days", "@achievement_year_warrior_desc": { "description": "365 day streak achievement description" + }, + + "total": "Total", + "@total": { + "description": "Total label (e.g., total time)" + }, + + "status": "Status", + "@status": { + "description": "Status label" + }, + + "pointsBreakdown": "Points Breakdown", + "@pointsBreakdown": { + "description": "Points breakdown section title" + }, + + "focusTimePoints": "Focus Time", + "@focusTimePoints": { + "description": "Points from focus time label" + }, + + "focusTimePointsDesc": "1 point per minute of focus", + "@focusTimePointsDesc": { + "description": "Focus time points description" + }, + + "honestyBonusLabel": "Honesty Bonus", + "@honestyBonusLabel": { + "description": "Honesty bonus label in breakdown" + }, + + "honestyBonusDesc": "Extra points for recording distractions", + "@honestyBonusDesc": { + "description": "Honesty bonus description" + }, + + "checkInPoints": "Daily Check-In", + "@checkInPoints": { + "description": "Daily check-in points label" + }, + + "checkInPointsDesc": "Base points for daily check-in", + "@checkInPointsDesc": { + "description": "Daily check-in points description" + }, + + "streakBonus": "Streak Bonus", + "@streakBonus": { + "description": "Streak bonus label" + }, + + "streakBonusDesc": "{days} consecutive check-ins", + "@streakBonusDesc": { + "description": "Streak bonus description", + "placeholders": { + "days": { + "type": "int" + } + } + }, + + "achievementBonusLabel": "Achievement Bonus", + "@achievementBonusLabel": { + "description": "Achievement bonus points label" + }, + + "weekdayS": "S", + "@weekdayS": { + "description": "Sunday abbreviation" + }, + + "weekdayM": "M", + "@weekdayM": { + "description": "Monday abbreviation" + }, + + "weekdayT": "T", + "@weekdayT": { + "description": "Tuesday abbreviation" + }, + + "weekdayW": "W", + "@weekdayW": { + "description": "Wednesday abbreviation" + }, + + "weekdayTh": "T", + "@weekdayTh": { + "description": "Thursday abbreviation" + }, + + "weekdayF": "F", + "@weekdayF": { + "description": "Friday abbreviation" + }, + + "weekdaySa": "S", + "@weekdaySa": { + "description": "Saturday abbreviation" } } diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 4132d0b..eda7235 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "Puntos", + "level": "Nivel", + "checked": "Registrado", + "checkIn": "Registrarse", + "earnedPoints": "Ganado:", + "basePoints": "Puntos Base", + "honestyBonus": "Bono de Honestidad", + "totalPoints": "Puntos Totales: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} registradas)", + "achievementUnlocked": "🎖️ ¡Logro Desbloqueado!", + "bonusPoints": "+{points} Puntos ⚡", + "checkInSuccess": "¡Registro exitoso! +{points} puntos ⚡", + "weeklyStreakBonus": "🎉 ¡Bono de racha semanal!", + "newAchievementUnlocked": "🎖️ ¡Nuevo logro desbloqueado!", + "alreadyCheckedIn": "¡Ya te registraste hoy! Vuelve mañana 📅", + "checkInCalendar": "Calendario de Registro 📅", + "checkInToday": "📅 Registrarse Hoy", + "checkedInToday": "✓ Registrado Hoy", + "currentStreak": "🔥 Racha Actual", + "longestStreak": "🏆 Racha Más Larga", + "days": "días", + "daysCount": "{count} días", + "achievements": "Logros 🎖️", + "viewAllAchievements": "Ver Todos los Logros", + "allAchievementsComingSoon": "¡Pantalla completa de logros próximamente!", + "profile": "Perfil", + "focuser": "Enfocador", + "pointsToNextLevel": "{points} puntos para Nivel {level}", + + "achievement_first_session_name": "Novato del Enfoque", + "achievement_first_session_desc": "Completa tu primera sesión de enfoque", + "achievement_sessions_10_name": "Comenzando", + "achievement_sessions_10_desc": "Completa 10 sesiones de enfoque", + "achievement_sessions_50_name": "Entusiasta del Enfoque", + "achievement_sessions_50_desc": "Completa 50 sesiones de enfoque", + "achievement_sessions_100_name": "Maestro del Enfoque", + "achievement_sessions_100_desc": "Completa 100 sesiones de enfoque", + "achievement_honest_bronze_name": "Registrador Honesto · Bronce", + "achievement_honest_bronze_desc": "Registra 50 distracciones honestamente", + "achievement_honest_silver_name": "Registrador Honesto · Plata", + "achievement_honest_silver_desc": "Registra 200 distracciones honestamente", + "achievement_honest_gold_name": "Registrador Honesto · Oro", + "achievement_honest_gold_desc": "Registra 500 distracciones honestamente", + "achievement_marathon_name": "Corredor de Maratón", + "achievement_marathon_desc": "Acumula 10 horas de tiempo de enfoque", + "achievement_century_name": "Club del Siglo", + "achievement_century_desc": "Acumula 100 horas de tiempo de enfoque", + "achievement_master_name": "Gran Maestro del Enfoque", + "achievement_master_desc": "Acumula 1000 horas de tiempo de enfoque", + "achievement_persistence_star_name": "Estrella de Persistencia", + "achievement_persistence_star_desc": "Regístrate durante 7 días consecutivos", + "achievement_monthly_habit_name": "Hábito Mensual", + "achievement_monthly_habit_desc": "Regístrate durante 30 días consecutivos", + "achievement_centurion_name": "Centurión", + "achievement_centurion_desc": "Regístrate durante 100 días consecutivos", + "achievement_year_warrior_name": "Guerrero del Año", + "achievement_year_warrior_desc": "Regístrate durante 365 días consecutivos", + + "total": "Total", + "status": "Estado", + "pointsBreakdown": "Desglose de Puntos", + "focusTimePoints": "Tiempo de Enfoque", + "focusTimePointsDesc": "1 punto por minuto de enfoque", + "honestyBonusLabel": "Bono de Honestidad", + "honestyBonusDesc": "Puntos extra por registrar distracciones", + "checkInPoints": "Registro Diario", + "checkInPointsDesc": "Puntos base por primer registro del día", + "streakBonus": "Bono de Racha", + "streakBonusDesc": "{days} registros consecutivos", + "achievementBonusLabel": "Bono de Logro", + + "weekdayS": "D", + "weekdayM": "L", + "weekdayT": "M", + "weekdayW": "X", + "weekdayTh": "J", + "weekdayF": "V", + "weekdaySa": "S" } diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index 8890f47..b133e3b 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "Points", + "level": "Niveau", + "checked": "Vérifié", + "checkIn": "S'enregistrer", + "earnedPoints": "Gagné:", + "basePoints": "Points de base", + "honestyBonus": "Bonus d'honnêteté", + "totalPoints": "Total des points: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} enregistrées)", + "achievementUnlocked": "🎖️ Succès débloqué!", + "bonusPoints": "+{points} Points ⚡", + "checkInSuccess": "Enregistrement réussi! +{points} points ⚡", + "weeklyStreakBonus": "🎉 Bonus de série hebdomadaire!", + "newAchievementUnlocked": "🎖️ Nouveau succès débloqué!", + "alreadyCheckedIn": "Vous vous êtes déjà enregistré aujourd'hui! Revenez demain 📅", + "checkInCalendar": "Calendrier d'enregistrement 📅", + "checkInToday": "📅 S'enregistrer aujourd'hui", + "checkedInToday": "✓ Enregistré aujourd'hui", + "currentStreak": "🔥 Série actuelle", + "longestStreak": "🏆 Plus longue série", + "days": "jours", + "daysCount": "{count} jours", + "achievements": "Succès 🎖️", + "viewAllAchievements": "Voir tous les succès", + "allAchievementsComingSoon": "Écran complet des succès bientôt disponible!", + "profile": "Profil", + "focuser": "Concentrateur", + "pointsToNextLevel": "{points} points jusqu'au niveau {level}", + + "achievement_first_session_name": "Débutant en concentration", + "achievement_first_session_desc": "Complétez votre première session de concentration", + "achievement_sessions_10_name": "Premiers pas", + "achievement_sessions_10_desc": "Complétez 10 sessions de concentration", + "achievement_sessions_50_name": "Passionné de concentration", + "achievement_sessions_50_desc": "Complétez 50 sessions de concentration", + "achievement_sessions_100_name": "Maître de la concentration", + "achievement_sessions_100_desc": "Complétez 100 sessions de concentration", + "achievement_honest_bronze_name": "Tracker honnête · Bronze", + "achievement_honest_bronze_desc": "Enregistrez 50 distractions honnêtement", + "achievement_honest_silver_name": "Tracker honnête · Argent", + "achievement_honest_silver_desc": "Enregistrez 200 distractions honnêtement", + "achievement_honest_gold_name": "Tracker honnête · Or", + "achievement_honest_gold_desc": "Enregistrez 500 distractions honnêtement", + "achievement_marathon_name": "Coureur de marathon", + "achievement_marathon_desc": "Accumulez 10 heures de temps de concentration", + "achievement_century_name": "Club du siècle", + "achievement_century_desc": "Accumulez 100 heures de temps de concentration", + "achievement_master_name": "Grand maître de la concentration", + "achievement_master_desc": "Accumulez 1000 heures de temps de concentration", + "achievement_persistence_star_name": "Étoile de la persévérance", + "achievement_persistence_star_desc": "Enregistrez-vous pendant 7 jours consécutifs", + "achievement_monthly_habit_name": "Habitude mensuelle", + "achievement_monthly_habit_desc": "Enregistrez-vous pendant 30 jours consécutifs", + "achievement_centurion_name": "Centurion", + "achievement_centurion_desc": "Enregistrez-vous pendant 100 jours consécutifs", + "achievement_year_warrior_name": "Guerrier de l'année", + "achievement_year_warrior_desc": "Enregistrez-vous pendant 365 jours consécutifs", + + "total": "Total", + "status": "Statut", + "pointsBreakdown": "Répartition des points", + "focusTimePoints": "Temps de concentration", + "focusTimePointsDesc": "1 point par minute de concentration", + "honestyBonusLabel": "Bonus d'honnêteté", + "honestyBonusDesc": "Points supplémentaires pour l'enregistrement des distractions", + "checkInPoints": "Enregistrement quotidien", + "checkInPointsDesc": "Points de base pour l'enregistrement quotidien", + "streakBonus": "Bonus de série", + "streakBonusDesc": "{days} enregistrements consécutifs", + "achievementBonusLabel": "Bonus de succès", + + "weekdayS": "D", + "weekdayM": "L", + "weekdayT": "M", + "weekdayW": "M", + "weekdayTh": "J", + "weekdayF": "V", + "weekdaySa": "S" } diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb index fb996dc..f0bf722 100644 --- a/lib/l10n/app_hi.arb +++ b/lib/l10n/app_hi.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "अंक", + "level": "स्तर", + "checked": "चेक किया", + "checkIn": "चेक-इन", + "earnedPoints": "अर्जित:", + "basePoints": "मूल अंक", + "honestyBonus": "ईमानदारी बोनस", + "totalPoints": "कुल अंक: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} रिकॉर्ड किया)", + "achievementUnlocked": "🎖️ उपलब्धि अनलॉक!", + "bonusPoints": "+{points} अंक ⚡", + "checkInSuccess": "चेक-इन सफल! +{points} अंक ⚡", + "weeklyStreakBonus": "🎉 साप्ताहिक स्ट्रीक बोनस!", + "newAchievementUnlocked": "🎖️ नई उपलब्धि अनलॉक!", + "alreadyCheckedIn": "आप आज पहले ही चेक-इन कर चुके हैं! कल वापस आएं 📅", + "checkInCalendar": "चेक-इन कैलेंडर 📅", + "checkInToday": "📅 आज चेक-इन करें", + "checkedInToday": "✓ आज चेक-इन हो गया", + "currentStreak": "🔥 वर्तमान स्ट्रीक", + "longestStreak": "🏆 सबसे लंबी स्ट्रीक", + "days": "दिन", + "daysCount": "{count} दिन", + "achievements": "उपलब्धियाँ 🎖️", + "viewAllAchievements": "सभी उपलब्धियाँ देखें", + "allAchievementsComingSoon": "पूर्ण उपलब्धि स्क्रीन जल्द आ रही है!", + "profile": "प्रोफ़ाइल", + "focuser": "फोकस करने वाला", + "pointsToNextLevel": "स्तर {level} के लिए {points} अंक", + + "achievement_first_session_name": "फोकस नौसिखिया", + "achievement_first_session_desc": "अपना पहला फोकस सत्र पूरा करें", + "achievement_sessions_10_name": "शुरुआत", + "achievement_sessions_10_desc": "10 फोकस सत्र पूरे करें", + "achievement_sessions_50_name": "फोकस उत्साही", + "achievement_sessions_50_desc": "50 फोकस सत्र पूरे करें", + "achievement_sessions_100_name": "फोकस मास्टर", + "achievement_sessions_100_desc": "100 फोकस सत्र पूरे करें", + "achievement_honest_bronze_name": "ईमानदार ट्रैकर · कांस्य", + "achievement_honest_bronze_desc": "ईमानदारी से 50 विकर्षण रिकॉर्ड करें", + "achievement_honest_silver_name": "ईमानदार ट्रैकर · रजत", + "achievement_honest_silver_desc": "ईमानदारी से 200 विकर्षण रिकॉर्ड करें", + "achievement_honest_gold_name": "ईमानदार ट्रैकर · स्वर्ण", + "achievement_honest_gold_desc": "ईमानदारी से 500 विकर्षण रिकॉर्ड करें", + "achievement_marathon_name": "मैराथन धावक", + "achievement_marathon_desc": "10 घंटे का फोकस समय जमा करें", + "achievement_century_name": "सेंचुरी क्लब", + "achievement_century_desc": "100 घंटे का फोकस समय जमा करें", + "achievement_master_name": "फोकस ग्रैंडमास्टर", + "achievement_master_desc": "1000 घंटे का फोकस समय जमा करें", + "achievement_persistence_star_name": "दृढ़ता का सितारा", + "achievement_persistence_star_desc": "7 दिनों तक लगातार चेक-इन करें", + "achievement_monthly_habit_name": "मासिक आदत", + "achievement_monthly_habit_desc": "30 दिनों तक लगातार चेक-इन करें", + "achievement_centurion_name": "सेंचुरियन", + "achievement_centurion_desc": "100 दिनों तक लगातार चेक-इन करें", + "achievement_year_warrior_name": "वर्ष योद्धा", + "achievement_year_warrior_desc": "365 दिनों तक लगातार चेक-इन करें", + + "total": "कुल", + "status": "स्थिति", + "pointsBreakdown": "अंकों का विवरण", + "focusTimePoints": "फोकस समय", + "focusTimePointsDesc": "फोकस के प्रति मिनट 1 अंक", + "honestyBonusLabel": "ईमानदारी बोनस", + "honestyBonusDesc": "विकर्षण रिकॉर्ड करने के लिए अतिरिक्त अंक", + "checkInPoints": "दैनिक चेक-इन", + "checkInPointsDesc": "दैनिक चेक-इन के लिए मूल अंक", + "streakBonus": "स्ट्रीक बोनस", + "streakBonusDesc": "{days} लगातार चेक-इन", + "achievementBonusLabel": "उपलब्धि बोनस", + + "weekdayS": "र", + "weekdayM": "सो", + "weekdayT": "मं", + "weekdayW": "बु", + "weekdayTh": "गु", + "weekdayF": "शु", + "weekdaySa": "श" } diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index bf34c79..e745dd6 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "Poin", + "level": "Level", + "checked": "Tercatat", + "checkIn": "Check-in", + "earnedPoints": "Diperoleh:", + "basePoints": "Poin Dasar", + "honestyBonus": "Bonus Kejujuran", + "totalPoints": "Total Poin: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} tercatat)", + "achievementUnlocked": "🎖️ Pencapaian Terbuka!", + "bonusPoints": "+{points} Poin ⚡", + "checkInSuccess": "Check-in berhasil! +{points} poin ⚡", + "weeklyStreakBonus": "🎉 Bonus streak mingguan!", + "newAchievementUnlocked": "🎖️ Pencapaian baru terbuka!", + "alreadyCheckedIn": "Anda sudah check-in hari ini! Kembali lagi besok 📅", + "checkInCalendar": "Kalender Check-In 📅", + "checkInToday": "📅 Check-in Hari Ini", + "checkedInToday": "✓ Sudah Check-in Hari Ini", + "currentStreak": "🔥 Streak Saat Ini", + "longestStreak": "🏆 Streak Terpanjang", + "days": "hari", + "daysCount": "{count} hari", + "achievements": "Pencapaian 🎖️", + "viewAllAchievements": "Lihat Semua Pencapaian", + "allAchievementsComingSoon": "Layar pencapaian lengkap segera hadir!", + "profile": "Profil", + "focuser": "Pemfokus", + "pointsToNextLevel": "{points} poin menuju Level {level}", + + "achievement_first_session_name": "Pemula Fokus", + "achievement_first_session_desc": "Selesaikan sesi fokus pertama Anda", + "achievement_sessions_10_name": "Memulai", + "achievement_sessions_10_desc": "Selesaikan 10 sesi fokus", + "achievement_sessions_50_name": "Penggemar Fokus", + "achievement_sessions_50_desc": "Selesaikan 50 sesi fokus", + "achievement_sessions_100_name": "Master Fokus", + "achievement_sessions_100_desc": "Selesaikan 100 sesi fokus", + "achievement_honest_bronze_name": "Pelacak Jujur · Perunggu", + "achievement_honest_bronze_desc": "Catat 50 gangguan dengan jujur", + "achievement_honest_silver_name": "Pelacak Jujur · Perak", + "achievement_honest_silver_desc": "Catat 200 gangguan dengan jujur", + "achievement_honest_gold_name": "Pelacak Jujur · Emas", + "achievement_honest_gold_desc": "Catat 500 gangguan dengan jujur", + "achievement_marathon_name": "Pelari Maraton", + "achievement_marathon_desc": "Kumpulkan 10 jam waktu fokus", + "achievement_century_name": "Klub Abad", + "achievement_century_desc": "Kumpulkan 100 jam waktu fokus", + "achievement_master_name": "Grandmaster Fokus", + "achievement_master_desc": "Kumpulkan 1000 jam waktu fokus", + "achievement_persistence_star_name": "Bintang Kegigihan", + "achievement_persistence_star_desc": "Check-in selama 7 hari berturut-turut", + "achievement_monthly_habit_name": "Kebiasaan Bulanan", + "achievement_monthly_habit_desc": "Check-in selama 30 hari berturut-turut", + "achievement_centurion_name": "Centurion", + "achievement_centurion_desc": "Check-in selama 100 hari berturut-turut", + "achievement_year_warrior_name": "Pejuang Tahun", + "achievement_year_warrior_desc": "Check-in selama 365 hari berturut-turut", + + "total": "Total", + "status": "Status", + "pointsBreakdown": "Rincian Poin", + "focusTimePoints": "Waktu Fokus", + "focusTimePointsDesc": "1 poin per menit fokus", + "honestyBonusLabel": "Bonus Kejujuran", + "honestyBonusDesc": "Poin tambahan untuk mencatat gangguan", + "checkInPoints": "Check-in Harian", + "checkInPointsDesc": "Poin dasar untuk check-in harian", + "streakBonus": "Bonus Streak", + "streakBonusDesc": "{days} check-in berturut-turut", + "achievementBonusLabel": "Bonus Pencapaian", + + "weekdayS": "M", + "weekdayM": "S", + "weekdayT": "S", + "weekdayW": "R", + "weekdayTh": "K", + "weekdayF": "J", + "weekdaySa": "S" } diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 6bcb5c9..97abc76 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "Punti", + "level": "Livello", + "checked": "Registrato", + "checkIn": "Check-in", + "earnedPoints": "Guadagnato:", + "basePoints": "Punti Base", + "honestyBonus": "Bonus Onestà", + "totalPoints": "Punti Totali: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} registrate)", + "achievementUnlocked": "🎖️ Obiettivo Sbloccato!", + "bonusPoints": "+{points} Punti ⚡", + "checkInSuccess": "Check-in riuscito! +{points} punti ⚡", + "weeklyStreakBonus": "🎉 Bonus serie settimanale!", + "newAchievementUnlocked": "🎖️ Nuovo obiettivo sbloccato!", + "alreadyCheckedIn": "Hai già fatto il check-in oggi! Torna domani 📅", + "checkInCalendar": "Calendario Check-In 📅", + "checkInToday": "📅 Check-in Oggi", + "checkedInToday": "✓ Check-in Fatto Oggi", + "currentStreak": "🔥 Serie Attuale", + "longestStreak": "🏆 Serie Più Lunga", + "days": "giorni", + "daysCount": "{count} giorni", + "achievements": "Obiettivi 🎖️", + "viewAllAchievements": "Vedi Tutti gli Obiettivi", + "allAchievementsComingSoon": "Schermata completa degli obiettivi in arrivo!", + "profile": "Profilo", + "focuser": "Concentratore", + "pointsToNextLevel": "{points} punti al Livello {level}", + + "achievement_first_session_name": "Principiante della Concentrazione", + "achievement_first_session_desc": "Completa la tua prima sessione di concentrazione", + "achievement_sessions_10_name": "Inizio", + "achievement_sessions_10_desc": "Completa 10 sessioni di concentrazione", + "achievement_sessions_50_name": "Appassionato di Concentrazione", + "achievement_sessions_50_desc": "Completa 50 sessioni di concentrazione", + "achievement_sessions_100_name": "Maestro della Concentrazione", + "achievement_sessions_100_desc": "Completa 100 sessioni di concentrazione", + "achievement_honest_bronze_name": "Tracker Onesto · Bronzo", + "achievement_honest_bronze_desc": "Registra onestamente 50 distrazioni", + "achievement_honest_silver_name": "Tracker Onesto · Argento", + "achievement_honest_silver_desc": "Registra onestamente 200 distrazioni", + "achievement_honest_gold_name": "Tracker Onesto · Oro", + "achievement_honest_gold_desc": "Registra onestamente 500 distrazioni", + "achievement_marathon_name": "Maratoneta", + "achievement_marathon_desc": "Accumula 10 ore di tempo di concentrazione", + "achievement_century_name": "Club del Secolo", + "achievement_century_desc": "Accumula 100 ore di tempo di concentrazione", + "achievement_master_name": "Gran Maestro della Concentrazione", + "achievement_master_desc": "Accumula 1000 ore di tempo di concentrazione", + "achievement_persistence_star_name": "Stella della Persistenza", + "achievement_persistence_star_desc": "Fai il check-in per 7 giorni consecutivi", + "achievement_monthly_habit_name": "Abitudine Mensile", + "achievement_monthly_habit_desc": "Fai il check-in per 30 giorni consecutivi", + "achievement_centurion_name": "Centurione", + "achievement_centurion_desc": "Fai il check-in per 100 giorni consecutivi", + "achievement_year_warrior_name": "Guerriero dell'Anno", + "achievement_year_warrior_desc": "Fai il check-in per 365 giorni consecutivi", + + "total": "Totale", + "status": "Stato", + "pointsBreakdown": "Dettaglio Punti", + "focusTimePoints": "Tempo di Concentrazione", + "focusTimePointsDesc": "1 punto per minuto di concentrazione", + "honestyBonusLabel": "Bonus Onestà", + "honestyBonusDesc": "Punti extra per registrare distrazioni", + "checkInPoints": "Check-in Giornaliero", + "checkInPointsDesc": "Punti base per check-in giornaliero", + "streakBonus": "Bonus Serie", + "streakBonusDesc": "{days} check-in consecutivi", + "achievementBonusLabel": "Bonus Obiettivo", + + "weekdayS": "D", + "weekdayM": "L", + "weekdayT": "M", + "weekdayW": "M", + "weekdayTh": "G", + "weekdayF": "V", + "weekdaySa": "S" } diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index d1b309e..a8a17e9 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "ポイント", + "level": "レベル", + "checked": "チェック済み", + "checkIn": "チェックイン", + "earnedPoints": "獲得:", + "basePoints": "基本ポイント", + "honestyBonus": "正直ボーナス", + "totalPoints": "合計ポイント:{count} ⚡", + "distractionsRecorded": "({count} {distractionText} 記録済み)", + "achievementUnlocked": "🎖️ 実績解除!", + "bonusPoints": "+{points} ポイント ⚡", + "checkInSuccess": "チェックイン成功!+{points} ポイント ⚡", + "weeklyStreakBonus": "🎉 1週間連続ボーナス!", + "newAchievementUnlocked": "🎖️ 新しい実績解除!", + "alreadyCheckedIn": "今日は既にチェックイン済みです!明日また来てください 📅", + "checkInCalendar": "チェックインカレンダー 📅", + "checkInToday": "📅 今日チェックイン", + "checkedInToday": "✓ 今日チェックイン済み", + "currentStreak": "🔥 現在の連続", + "longestStreak": "🏆 最長連続", + "days": "日", + "daysCount": "{count} 日", + "achievements": "実績 🎖️", + "viewAllAchievements": "すべての実績を見る", + "allAchievementsComingSoon": "完全な実績画面は近日公開!", + "profile": "プロフィール", + "focuser": "集中する人", + "pointsToNextLevel": "レベル {level} まであと {points} ポイント", + + "achievement_first_session_name": "集中初心者", + "achievement_first_session_desc": "最初の集中セッションを完了", + "achievement_sessions_10_name": "入門者", + "achievement_sessions_10_desc": "10回の集中セッションを完了", + "achievement_sessions_50_name": "集中愛好家", + "achievement_sessions_50_desc": "50回の集中セッションを完了", + "achievement_sessions_100_name": "集中マスター", + "achievement_sessions_100_desc": "100回の集中セッションを完了", + "achievement_honest_bronze_name": "正直な記録者・ブロンズ", + "achievement_honest_bronze_desc": "50回の気の散りを正直に記録", + "achievement_honest_silver_name": "正直な記録者・シルバー", + "achievement_honest_silver_desc": "200回の気の散りを正直に記録", + "achievement_honest_gold_name": "正直な記録者・ゴールド", + "achievement_honest_gold_desc": "500回の気の散りを正直に記録", + "achievement_marathon_name": "マラソンランナー", + "achievement_marathon_desc": "10時間の集中時間を累積", + "achievement_century_name": "センチュリークラブ", + "achievement_century_desc": "100時間の集中時間を累積", + "achievement_master_name": "集中グランドマスター", + "achievement_master_desc": "1000時間の集中時間を累積", + "achievement_persistence_star_name": "継続の星", + "achievement_persistence_star_desc": "7日間連続でチェックイン", + "achievement_monthly_habit_name": "月間習慣", + "achievement_monthly_habit_desc": "30日間連続でチェックイン", + "achievement_centurion_name": "百日戦士", + "achievement_centurion_desc": "100日間連続でチェックイン", + "achievement_year_warrior_name": "年間戦士", + "achievement_year_warrior_desc": "365日間連続でチェックイン", + + "total": "合計", + "status": "ステータス", + "pointsBreakdown": "ポイント内訳", + "focusTimePoints": "集中時間", + "focusTimePointsDesc": "1分の集中につき1ポイント", + "honestyBonusLabel": "正直ボーナス", + "honestyBonusDesc": "気の散りを記録すると追加ポイント", + "checkInPoints": "毎日チェックイン", + "checkInPointsDesc": "毎日の初回チェックインで基本ポイント", + "streakBonus": "連続ボーナス", + "streakBonusDesc": "{days} 日連続チェックイン", + "achievementBonusLabel": "実績ボーナス", + + "weekdayS": "日", + "weekdayM": "月", + "weekdayT": "火", + "weekdayW": "水", + "weekdayTh": "木", + "weekdayF": "金", + "weekdaySa": "土" } diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb index 7c13a61..9c32e10 100644 --- a/lib/l10n/app_ko.arb +++ b/lib/l10n/app_ko.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "포인트", + "level": "레벨", + "checked": "체크 완료", + "checkIn": "체크인", + "earnedPoints": "획득:", + "basePoints": "기본 포인트", + "honestyBonus": "정직 보너스", + "totalPoints": "총 포인트: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} 기록됨)", + "achievementUnlocked": "🎖️ 업적 달성!", + "bonusPoints": "+{points} 포인트 ⚡", + "checkInSuccess": "체크인 성공! +{points} 포인트 ⚡", + "weeklyStreakBonus": "🎉 주간 연속 보너스!", + "newAchievementUnlocked": "🎖️ 새로운 업적 달성!", + "alreadyCheckedIn": "오늘 이미 체크인했어요! 내일 다시 오세요 📅", + "checkInCalendar": "체크인 캘린더 📅", + "checkInToday": "📅 오늘 체크인", + "checkedInToday": "✓ 오늘 체크인 완료", + "currentStreak": "🔥 현재 연속", + "longestStreak": "🏆 최장 연속", + "days": "일", + "daysCount": "{count} 일", + "achievements": "업적 🎖️", + "viewAllAchievements": "모든 업적 보기", + "allAchievementsComingSoon": "전체 업적 화면 곧 공개!", + "profile": "프로필", + "focuser": "집중하는 사람", + "pointsToNextLevel": "레벨 {level}까지 {points} 포인트 남음", + + "achievement_first_session_name": "집중 초보자", + "achievement_first_session_desc": "첫 집중 세션 완료", + "achievement_sessions_10_name": "시작 단계", + "achievement_sessions_10_desc": "10회 집중 세션 완료", + "achievement_sessions_50_name": "집중 애호가", + "achievement_sessions_50_desc": "50회 집중 세션 완료", + "achievement_sessions_100_name": "집중 마스터", + "achievement_sessions_100_desc": "100회 집중 세션 완료", + "achievement_honest_bronze_name": "정직한 기록자 · 브론즈", + "achievement_honest_bronze_desc": "50회 산만함을 정직하게 기록", + "achievement_honest_silver_name": "정직한 기록자 · 실버", + "achievement_honest_silver_desc": "200회 산만함을 정직하게 기록", + "achievement_honest_gold_name": "정직한 기록자 · 골드", + "achievement_honest_gold_desc": "500회 산만함을 정직하게 기록", + "achievement_marathon_name": "마라톤 러너", + "achievement_marathon_desc": "누적 10시간 집중", + "achievement_century_name": "센추리 클럽", + "achievement_century_desc": "누적 100시간 집중", + "achievement_master_name": "집중 그랜드마스터", + "achievement_master_desc": "누적 1000시간 집중", + "achievement_persistence_star_name": "끈기의 별", + "achievement_persistence_star_desc": "7일 연속 체크인", + "achievement_monthly_habit_name": "월간 습관", + "achievement_monthly_habit_desc": "30일 연속 체크인", + "achievement_centurion_name": "백일 전사", + "achievement_centurion_desc": "100일 연속 체크인", + "achievement_year_warrior_name": "연간 전사", + "achievement_year_warrior_desc": "365일 연속 체크인", + + "total": "합계", + "status": "상태", + "pointsBreakdown": "포인트 세부 내역", + "focusTimePoints": "집중 시간", + "focusTimePointsDesc": "1분 집중당 1포인트", + "honestyBonusLabel": "정직 보너스", + "honestyBonusDesc": "산만함 기록 시 추가 포인트", + "checkInPoints": "일일 체크인", + "checkInPointsDesc": "매일 첫 체크인 시 기본 포인트", + "streakBonus": "연속 보너스", + "streakBonusDesc": "{days}일 연속 체크인", + "achievementBonusLabel": "업적 보너스", + + "weekdayS": "일", + "weekdayM": "월", + "weekdayT": "화", + "weekdayW": "수", + "weekdayTh": "목", + "weekdayF": "금", + "weekdaySa": "토" } diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index f5d40ae..c7d2eee 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -992,6 +992,120 @@ abstract class AppLocalizations { /// In en, this message translates to: /// **'Check in for 365 consecutive days'** String get achievement_year_warrior_desc; + + /// Total label (e.g., total time) + /// + /// In en, this message translates to: + /// **'Total'** + String get total; + + /// Status label + /// + /// In en, this message translates to: + /// **'Status'** + String get status; + + /// Points breakdown section title + /// + /// In en, this message translates to: + /// **'Points Breakdown'** + String get pointsBreakdown; + + /// Points from focus time label + /// + /// In en, this message translates to: + /// **'Focus Time'** + String get focusTimePoints; + + /// Focus time points description + /// + /// In en, this message translates to: + /// **'1 point per minute of focus'** + String get focusTimePointsDesc; + + /// Honesty bonus label in breakdown + /// + /// In en, this message translates to: + /// **'Honesty Bonus'** + String get honestyBonusLabel; + + /// Honesty bonus description + /// + /// In en, this message translates to: + /// **'Extra points for recording distractions'** + String get honestyBonusDesc; + + /// Daily check-in points label + /// + /// In en, this message translates to: + /// **'Daily Check-In'** + String get checkInPoints; + + /// Daily check-in points description + /// + /// In en, this message translates to: + /// **'Base points for daily check-in'** + String get checkInPointsDesc; + + /// Streak bonus label + /// + /// In en, this message translates to: + /// **'Streak Bonus'** + String get streakBonus; + + /// Streak bonus description + /// + /// In en, this message translates to: + /// **'{days} consecutive check-ins'** + String streakBonusDesc(int days); + + /// Achievement bonus points label + /// + /// In en, this message translates to: + /// **'Achievement Bonus'** + String get achievementBonusLabel; + + /// Sunday abbreviation + /// + /// In en, this message translates to: + /// **'S'** + String get weekdayS; + + /// Monday abbreviation + /// + /// In en, this message translates to: + /// **'M'** + String get weekdayM; + + /// Tuesday abbreviation + /// + /// In en, this message translates to: + /// **'T'** + String get weekdayT; + + /// Wednesday abbreviation + /// + /// In en, this message translates to: + /// **'W'** + String get weekdayW; + + /// Thursday abbreviation + /// + /// In en, this message translates to: + /// **'T'** + String get weekdayTh; + + /// Friday abbreviation + /// + /// In en, this message translates to: + /// **'F'** + String get weekdayF; + + /// Saturday abbreviation + /// + /// In en, this message translates to: + /// **'S'** + String get weekdaySa; } class _AppLocalizationsDelegate diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index 1ad2e41..cb7057f 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -335,190 +335,244 @@ class AppLocalizationsAr extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => 'النقاط'; @override - String get level => 'Level'; + String get level => 'المستوى'; @override - String get checked => 'Checked'; + String get checked => 'تم التسجيل'; @override - String get checkIn => 'Check In'; + String get checkIn => 'تسجيل الحضور'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => 'المكتسب:'; @override - String get basePoints => 'Base Points'; + String get basePoints => 'النقاط الأساسية'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => 'مكافأة الصدق'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return 'إجمالي النقاط: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText مسجلة)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ إنجاز مفتوح!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points نقاط ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return 'تسجيل الحضور ناجح! +$points نقاط ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 مكافأة السلسلة الأسبوعية!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ إنجاز جديد مفتوح!'; @override - String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + String get alreadyCheckedIn => 'لقد سجلت حضورك اليوم بالفعل! عد غدًا 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'تقويم تسجيل الحضور 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 سجل الحضور اليوم'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ تم التسجيل اليوم'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 السلسلة الحالية'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 أطول سلسلة'; @override - String get days => 'days'; + String get days => 'أيام'; @override String daysCount(int count) { - return '$count days'; + return '$count أيام'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => 'الإنجازات 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'عرض جميع الإنجازات'; @override - String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + String get allAchievementsComingSoon => 'شاشة الإنجازات الكاملة قريبًا!'; @override - String get profile => 'Profile'; + String get profile => 'الملف الشخصي'; @override - String get focuser => 'Focuser'; + String get focuser => 'المركز'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return '$points نقاط إلى المستوى $level'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => 'مبتدئ التركيز'; @override - String get achievement_first_session_desc => - 'Complete your first focus session'; + String get achievement_first_session_desc => 'أكمل جلسة التركيز الأولى'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => 'البداية'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => 'أكمل 10 جلسات تركيز'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => 'عاشق التركيز'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => 'أكمل 50 جلسة تركيز'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => 'سيد التركيز'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => 'أكمل 100 جلسة تركيز'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => 'المتتبع الصادق · برونزي'; @override - String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + String get achievement_honest_bronze_desc => 'سجل 50 تشتتًا بصدق'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => 'المتتبع الصادق · فضي'; @override - String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + String get achievement_honest_silver_desc => 'سجل 200 تشتت بصدق'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => 'المتتبع الصادق · ذهبي'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => 'سجل 500 تشتت بصدق'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'عداء الماراثون'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => 'اجمع 10 ساعات من وقت التركيز'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'نادي القرن'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => 'اجمع 100 ساعة من وقت التركيز'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => 'جراند ماستر التركيز'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => 'اجمع 1000 ساعة من وقت التركيز'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => 'نجمة المثابرة'; @override String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + 'سجل الحضور لمدة 7 أيام متتالية'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => 'العادة الشهرية'; @override String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + 'سجل الحضور لمدة 30 يومًا متتاليًا'; @override - String get achievement_centurion_name => 'Centurion'; + String get achievement_centurion_name => 'المئوي'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => 'سجل الحضور لمدة 100 يوم متتالٍ'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => 'محارب العام'; @override String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + 'سجل الحضور لمدة 365 يومًا متتاليًا'; + + @override + String get total => 'الإجمالي'; + + @override + String get status => 'الحالة'; + + @override + String get pointsBreakdown => 'تفصيل النقاط'; + + @override + String get focusTimePoints => 'وقت التركيز'; + + @override + String get focusTimePointsDesc => 'نقطة واحدة لكل دقيقة تركيز'; + + @override + String get honestyBonusLabel => 'مكافأة الصدق'; + + @override + String get honestyBonusDesc => 'نقاط إضافية لتسجيل التشتتات'; + + @override + String get checkInPoints => 'تسجيل الحضور اليومي'; + + @override + String get checkInPointsDesc => 'النقاط الأساسية لتسجيل الحضور اليومي'; + + @override + String get streakBonus => 'مكافأة السلسلة'; + + @override + String streakBonusDesc(int days) { + return '$days تسجيلات حضور متتالية'; + } + + @override + String get achievementBonusLabel => 'مكافأة الإنجاز'; + + @override + String get weekdayS => 'ح'; + + @override + String get weekdayM => 'ن'; + + @override + String get weekdayT => 'ث'; + + @override + String get weekdayW => 'ر'; + + @override + String get weekdayTh => 'خ'; + + @override + String get weekdayF => 'ج'; + + @override + String get weekdaySa => 'س'; } diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index a9c241b..3550d03 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -338,190 +338,248 @@ class AppLocalizationsDe extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => 'Punkte'; @override String get level => 'Level'; @override - String get checked => 'Checked'; + String get checked => 'Geprüft'; @override - String get checkIn => 'Check In'; + String get checkIn => 'Einchecken'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => 'Verdient:'; @override - String get basePoints => 'Base Points'; + String get basePoints => 'Basispunkte'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => 'Ehrlichkeitsbonus'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return 'Gesamt Punkte: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText aufgezeichnet)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ Erfolg freigeschaltet!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points Punkte ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return 'Check-in erfolgreich! +$points Punkte ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 Wöchentlicher Streak-Bonus!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ Neuer Erfolg freigeschaltet!'; @override String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + 'Du hast heute bereits eingecheckt! Komm morgen wieder 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'Check-in-Kalender 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 Heute einchecken'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ Heute eingecheckt'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 Aktueller Streak'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 Längster Streak'; @override - String get days => 'days'; + String get days => 'Tage'; @override String daysCount(int count) { - return '$count days'; + return '$count Tage'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => 'Erfolge 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'Alle Erfolge anzeigen'; @override String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + 'Vollständiger Erfolge-Bildschirm kommt bald!'; @override - String get profile => 'Profile'; + String get profile => 'Profil'; @override - String get focuser => 'Focuser'; + String get focuser => 'Fokussierer'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return '$points Punkte bis Level $level'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => 'Fokus-Neuling'; @override String get achievement_first_session_desc => - 'Complete your first focus session'; + 'Schließe deine erste Fokussitzung ab'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => 'Erste Schritte'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => 'Schließe 10 Fokussitzungen ab'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => 'Fokus-Enthusiast'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => 'Schließe 50 Fokussitzungen ab'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => 'Fokus-Meister'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => 'Schließe 100 Fokussitzungen ab'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => 'Ehrlicher Tracker · Bronze'; @override String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + 'Zeichne 50 Ablenkungen ehrlich auf'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => 'Ehrlicher Tracker · Silber'; @override String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + 'Zeichne 200 Ablenkungen ehrlich auf'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => 'Ehrlicher Tracker · Gold'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => + 'Zeichne 500 Ablenkungen ehrlich auf'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'Marathon-Läufer'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => 'Sammle 10 Stunden Fokuszeit'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'Jahrhundert-Club'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => 'Sammle 100 Stunden Fokuszeit'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => 'Fokus-Großmeister'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => 'Sammle 1000 Stunden Fokuszeit'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => 'Beharrlichkeitsstern'; @override - String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + String get achievement_persistence_star_desc => 'Checke 7 Tage in Folge ein'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => 'Monatliche Gewohnheit'; @override - String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + String get achievement_monthly_habit_desc => 'Checke 30 Tage in Folge ein'; @override - String get achievement_centurion_name => 'Centurion'; + String get achievement_centurion_name => 'Zenturio'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => 'Checke 100 Tage in Folge ein'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => 'Jahreskrieger'; @override - String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + String get achievement_year_warrior_desc => 'Checke 365 Tage in Folge ein'; + + @override + String get total => 'Gesamt'; + + @override + String get status => 'Status'; + + @override + String get pointsBreakdown => 'Punkteaufschlüsselung'; + + @override + String get focusTimePoints => 'Fokuszeit'; + + @override + String get focusTimePointsDesc => '1 Punkt pro Minute Fokus'; + + @override + String get honestyBonusLabel => 'Ehrlichkeitsbonus'; + + @override + String get honestyBonusDesc => + 'Extrapunkte für das Aufzeichnen von Ablenkungen'; + + @override + String get checkInPoints => 'Täglicher Check-in'; + + @override + String get checkInPointsDesc => 'Basispunkte für täglichen Check-in'; + + @override + String get streakBonus => 'Streak-Bonus'; + + @override + String streakBonusDesc(int days) { + return '$days aufeinanderfolgende Check-ins'; + } + + @override + String get achievementBonusLabel => 'Erfolgsbonus'; + + @override + String get weekdayS => 'S'; + + @override + String get weekdayM => 'M'; + + @override + String get weekdayT => 'D'; + + @override + String get weekdayW => 'M'; + + @override + String get weekdayTh => 'D'; + + @override + String get weekdayF => 'F'; + + @override + String get weekdaySa => 'S'; } diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 54a9960..e46c6ea 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -522,4 +522,63 @@ class AppLocalizationsEn extends AppLocalizations { @override String get achievement_year_warrior_desc => 'Check in for 365 consecutive days'; + + @override + String get total => 'Total'; + + @override + String get status => 'Status'; + + @override + String get pointsBreakdown => 'Points Breakdown'; + + @override + String get focusTimePoints => 'Focus Time'; + + @override + String get focusTimePointsDesc => '1 point per minute of focus'; + + @override + String get honestyBonusLabel => 'Honesty Bonus'; + + @override + String get honestyBonusDesc => 'Extra points for recording distractions'; + + @override + String get checkInPoints => 'Daily Check-In'; + + @override + String get checkInPointsDesc => 'Base points for daily check-in'; + + @override + String get streakBonus => 'Streak Bonus'; + + @override + String streakBonusDesc(int days) { + return '$days consecutive check-ins'; + } + + @override + String get achievementBonusLabel => 'Achievement Bonus'; + + @override + String get weekdayS => 'S'; + + @override + String get weekdayM => 'M'; + + @override + String get weekdayT => 'T'; + + @override + String get weekdayW => 'W'; + + @override + String get weekdayTh => 'T'; + + @override + String get weekdayF => 'F'; + + @override + String get weekdaySa => 'S'; } diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index 957e122..1698aea 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -339,190 +339,254 @@ class AppLocalizationsEs extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => 'Puntos'; @override - String get level => 'Level'; + String get level => 'Nivel'; @override - String get checked => 'Checked'; + String get checked => 'Registrado'; @override - String get checkIn => 'Check In'; + String get checkIn => 'Registrarse'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => 'Ganado:'; @override - String get basePoints => 'Base Points'; + String get basePoints => 'Puntos Base'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => 'Bono de Honestidad'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return 'Puntos Totales: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText registradas)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ ¡Logro Desbloqueado!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points Puntos ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return '¡Registro exitoso! +$points puntos ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 ¡Bono de racha semanal!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ ¡Nuevo logro desbloqueado!'; @override - String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + String get alreadyCheckedIn => '¡Ya te registraste hoy! Vuelve mañana 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'Calendario de Registro 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 Registrarse Hoy'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ Registrado Hoy'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 Racha Actual'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 Racha Más Larga'; @override - String get days => 'days'; + String get days => 'días'; @override String daysCount(int count) { - return '$count days'; + return '$count días'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => 'Logros 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'Ver Todos los Logros'; @override String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + '¡Pantalla completa de logros próximamente!'; @override - String get profile => 'Profile'; + String get profile => 'Perfil'; @override - String get focuser => 'Focuser'; + String get focuser => 'Enfocador'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return '$points puntos para Nivel $level'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => 'Novato del Enfoque'; @override String get achievement_first_session_desc => - 'Complete your first focus session'; + 'Completa tu primera sesión de enfoque'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => 'Comenzando'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => 'Completa 10 sesiones de enfoque'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => 'Entusiasta del Enfoque'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => 'Completa 50 sesiones de enfoque'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => 'Maestro del Enfoque'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => + 'Completa 100 sesiones de enfoque'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => 'Registrador Honesto · Bronce'; @override String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + 'Registra 50 distracciones honestamente'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => 'Registrador Honesto · Plata'; @override String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + 'Registra 200 distracciones honestamente'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => 'Registrador Honesto · Oro'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => + 'Registra 500 distracciones honestamente'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'Corredor de Maratón'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => + 'Acumula 10 horas de tiempo de enfoque'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'Club del Siglo'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => + 'Acumula 100 horas de tiempo de enfoque'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => 'Gran Maestro del Enfoque'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => + 'Acumula 1000 horas de tiempo de enfoque'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => 'Estrella de Persistencia'; @override String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + 'Regístrate durante 7 días consecutivos'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => 'Hábito Mensual'; @override String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + 'Regístrate durante 30 días consecutivos'; @override - String get achievement_centurion_name => 'Centurion'; + String get achievement_centurion_name => 'Centurión'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => + 'Regístrate durante 100 días consecutivos'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => 'Guerrero del Año'; @override String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + 'Regístrate durante 365 días consecutivos'; + + @override + String get total => 'Total'; + + @override + String get status => 'Estado'; + + @override + String get pointsBreakdown => 'Desglose de Puntos'; + + @override + String get focusTimePoints => 'Tiempo de Enfoque'; + + @override + String get focusTimePointsDesc => '1 punto por minuto de enfoque'; + + @override + String get honestyBonusLabel => 'Bono de Honestidad'; + + @override + String get honestyBonusDesc => 'Puntos extra por registrar distracciones'; + + @override + String get checkInPoints => 'Registro Diario'; + + @override + String get checkInPointsDesc => 'Puntos base por primer registro del día'; + + @override + String get streakBonus => 'Bono de Racha'; + + @override + String streakBonusDesc(int days) { + return '$days registros consecutivos'; + } + + @override + String get achievementBonusLabel => 'Bono de Logro'; + + @override + String get weekdayS => 'D'; + + @override + String get weekdayM => 'L'; + + @override + String get weekdayT => 'M'; + + @override + String get weekdayW => 'X'; + + @override + String get weekdayTh => 'J'; + + @override + String get weekdayF => 'V'; + + @override + String get weekdaySa => 'S'; } diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index f557965..de7b3e8 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -342,35 +342,35 @@ class AppLocalizationsFr extends AppLocalizations { String get points => 'Points'; @override - String get level => 'Level'; + String get level => 'Niveau'; @override - String get checked => 'Checked'; + String get checked => 'Vérifié'; @override - String get checkIn => 'Check In'; + String get checkIn => 'S\'enregistrer'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => 'Gagné:'; @override - String get basePoints => 'Base Points'; + String get basePoints => 'Points de base'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => 'Bonus d\'honnêteté'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return 'Total des points: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText enregistrées)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ Succès débloqué!'; @override String bonusPoints(int points) { @@ -379,150 +379,219 @@ class AppLocalizationsFr extends AppLocalizations { @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return 'Enregistrement réussi! +$points points ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 Bonus de série hebdomadaire!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ Nouveau succès débloqué!'; @override String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + 'Vous vous êtes déjà enregistré aujourd\'hui! Revenez demain 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'Calendrier d\'enregistrement 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 S\'enregistrer aujourd\'hui'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ Enregistré aujourd\'hui'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 Série actuelle'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 Plus longue série'; @override - String get days => 'days'; + String get days => 'jours'; @override String daysCount(int count) { - return '$count days'; + return '$count jours'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => 'Succès 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'Voir tous les succès'; @override String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + 'Écran complet des succès bientôt disponible!'; @override - String get profile => 'Profile'; + String get profile => 'Profil'; @override - String get focuser => 'Focuser'; + String get focuser => 'Concentrateur'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return '$points points jusqu\'au niveau $level'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => 'Débutant en concentration'; @override String get achievement_first_session_desc => - 'Complete your first focus session'; + 'Complétez votre première session de concentration'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => 'Premiers pas'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => + 'Complétez 10 sessions de concentration'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => 'Passionné de concentration'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => + 'Complétez 50 sessions de concentration'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => 'Maître de la concentration'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => + 'Complétez 100 sessions de concentration'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => 'Tracker honnête · Bronze'; @override String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + 'Enregistrez 50 distractions honnêtement'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => 'Tracker honnête · Argent'; @override String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + 'Enregistrez 200 distractions honnêtement'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => 'Tracker honnête · Or'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => + 'Enregistrez 500 distractions honnêtement'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'Coureur de marathon'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => + 'Accumulez 10 heures de temps de concentration'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'Club du siècle'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => + 'Accumulez 100 heures de temps de concentration'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => 'Grand maître de la concentration'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => + 'Accumulez 1000 heures de temps de concentration'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => 'Étoile de la persévérance'; @override String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + 'Enregistrez-vous pendant 7 jours consécutifs'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => 'Habitude mensuelle'; @override String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + 'Enregistrez-vous pendant 30 jours consécutifs'; @override String get achievement_centurion_name => 'Centurion'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => + 'Enregistrez-vous pendant 100 jours consécutifs'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => 'Guerrier de l\'année'; @override String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + 'Enregistrez-vous pendant 365 jours consécutifs'; + + @override + String get total => 'Total'; + + @override + String get status => 'Statut'; + + @override + String get pointsBreakdown => 'Répartition des points'; + + @override + String get focusTimePoints => 'Temps de concentration'; + + @override + String get focusTimePointsDesc => '1 point par minute de concentration'; + + @override + String get honestyBonusLabel => 'Bonus d\'honnêteté'; + + @override + String get honestyBonusDesc => + 'Points supplémentaires pour l\'enregistrement des distractions'; + + @override + String get checkInPoints => 'Enregistrement quotidien'; + + @override + String get checkInPointsDesc => + 'Points de base pour l\'enregistrement quotidien'; + + @override + String get streakBonus => 'Bonus de série'; + + @override + String streakBonusDesc(int days) { + return '$days enregistrements consécutifs'; + } + + @override + String get achievementBonusLabel => 'Bonus de succès'; + + @override + String get weekdayS => 'D'; + + @override + String get weekdayM => 'L'; + + @override + String get weekdayT => 'M'; + + @override + String get weekdayW => 'M'; + + @override + String get weekdayTh => 'J'; + + @override + String get weekdayF => 'V'; + + @override + String get weekdaySa => 'S'; } diff --git a/lib/l10n/app_localizations_hi.dart b/lib/l10n/app_localizations_hi.dart index d14d080..3a2ea3d 100644 --- a/lib/l10n/app_localizations_hi.dart +++ b/lib/l10n/app_localizations_hi.dart @@ -338,190 +338,247 @@ class AppLocalizationsHi extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => 'अंक'; @override - String get level => 'Level'; + String get level => 'स्तर'; @override - String get checked => 'Checked'; + String get checked => 'चेक किया'; @override - String get checkIn => 'Check In'; + String get checkIn => 'चेक-इन'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => 'अर्जित:'; @override - String get basePoints => 'Base Points'; + String get basePoints => 'मूल अंक'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => 'ईमानदारी बोनस'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return 'कुल अंक: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText रिकॉर्ड किया)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ उपलब्धि अनलॉक!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points अंक ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return 'चेक-इन सफल! +$points अंक ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 साप्ताहिक स्ट्रीक बोनस!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ नई उपलब्धि अनलॉक!'; @override String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + 'आप आज पहले ही चेक-इन कर चुके हैं! कल वापस आएं 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'चेक-इन कैलेंडर 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 आज चेक-इन करें'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ आज चेक-इन हो गया'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 वर्तमान स्ट्रीक'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 सबसे लंबी स्ट्रीक'; @override - String get days => 'days'; + String get days => 'दिन'; @override String daysCount(int count) { - return '$count days'; + return '$count दिन'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => 'उपलब्धियाँ 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'सभी उपलब्धियाँ देखें'; @override String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + 'पूर्ण उपलब्धि स्क्रीन जल्द आ रही है!'; @override - String get profile => 'Profile'; + String get profile => 'प्रोफ़ाइल'; @override - String get focuser => 'Focuser'; + String get focuser => 'फोकस करने वाला'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return 'स्तर $level के लिए $points अंक'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => 'फोकस नौसिखिया'; @override - String get achievement_first_session_desc => - 'Complete your first focus session'; + String get achievement_first_session_desc => 'अपना पहला फोकस सत्र पूरा करें'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => 'शुरुआत'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => '10 फोकस सत्र पूरे करें'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => 'फोकस उत्साही'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => '50 फोकस सत्र पूरे करें'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => 'फोकस मास्टर'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => '100 फोकस सत्र पूरे करें'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => 'ईमानदार ट्रैकर · कांस्य'; @override String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + 'ईमानदारी से 50 विकर्षण रिकॉर्ड करें'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => 'ईमानदार ट्रैकर · रजत'; @override String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + 'ईमानदारी से 200 विकर्षण रिकॉर्ड करें'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => 'ईमानदार ट्रैकर · स्वर्ण'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => + 'ईमानदारी से 500 विकर्षण रिकॉर्ड करें'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'मैराथन धावक'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => '10 घंटे का फोकस समय जमा करें'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'सेंचुरी क्लब'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => '100 घंटे का फोकस समय जमा करें'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => 'फोकस ग्रैंडमास्टर'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => '1000 घंटे का फोकस समय जमा करें'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => 'दृढ़ता का सितारा'; @override String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + '7 दिनों तक लगातार चेक-इन करें'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => 'मासिक आदत'; @override - String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + String get achievement_monthly_habit_desc => '30 दिनों तक लगातार चेक-इन करें'; @override - String get achievement_centurion_name => 'Centurion'; + String get achievement_centurion_name => 'सेंचुरियन'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => '100 दिनों तक लगातार चेक-इन करें'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => 'वर्ष योद्धा'; @override - String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + String get achievement_year_warrior_desc => '365 दिनों तक लगातार चेक-इन करें'; + + @override + String get total => 'कुल'; + + @override + String get status => 'स्थिति'; + + @override + String get pointsBreakdown => 'अंकों का विवरण'; + + @override + String get focusTimePoints => 'फोकस समय'; + + @override + String get focusTimePointsDesc => 'फोकस के प्रति मिनट 1 अंक'; + + @override + String get honestyBonusLabel => 'ईमानदारी बोनस'; + + @override + String get honestyBonusDesc => 'विकर्षण रिकॉर्ड करने के लिए अतिरिक्त अंक'; + + @override + String get checkInPoints => 'दैनिक चेक-इन'; + + @override + String get checkInPointsDesc => 'दैनिक चेक-इन के लिए मूल अंक'; + + @override + String get streakBonus => 'स्ट्रीक बोनस'; + + @override + String streakBonusDesc(int days) { + return '$days लगातार चेक-इन'; + } + + @override + String get achievementBonusLabel => 'उपलब्धि बोनस'; + + @override + String get weekdayS => 'र'; + + @override + String get weekdayM => 'सो'; + + @override + String get weekdayT => 'मं'; + + @override + String get weekdayW => 'बु'; + + @override + String get weekdayTh => 'गु'; + + @override + String get weekdayF => 'शु'; + + @override + String get weekdaySa => 'श'; } diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index 7150016..262f8d6 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -338,190 +338,249 @@ class AppLocalizationsId extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => 'Poin'; @override String get level => 'Level'; @override - String get checked => 'Checked'; + String get checked => 'Tercatat'; @override - String get checkIn => 'Check In'; + String get checkIn => 'Check-in'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => 'Diperoleh:'; @override - String get basePoints => 'Base Points'; + String get basePoints => 'Poin Dasar'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => 'Bonus Kejujuran'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return 'Total Poin: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText tercatat)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ Pencapaian Terbuka!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points Poin ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return 'Check-in berhasil! +$points poin ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 Bonus streak mingguan!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ Pencapaian baru terbuka!'; @override String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + 'Anda sudah check-in hari ini! Kembali lagi besok 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'Kalender Check-In 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 Check-in Hari Ini'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ Sudah Check-in Hari Ini'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 Streak Saat Ini'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 Streak Terpanjang'; @override - String get days => 'days'; + String get days => 'hari'; @override String daysCount(int count) { - return '$count days'; + return '$count hari'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => 'Pencapaian 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'Lihat Semua Pencapaian'; @override String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + 'Layar pencapaian lengkap segera hadir!'; @override - String get profile => 'Profile'; + String get profile => 'Profil'; @override - String get focuser => 'Focuser'; + String get focuser => 'Pemfokus'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return '$points poin menuju Level $level'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => 'Pemula Fokus'; @override String get achievement_first_session_desc => - 'Complete your first focus session'; + 'Selesaikan sesi fokus pertama Anda'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => 'Memulai'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => 'Selesaikan 10 sesi fokus'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => 'Penggemar Fokus'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => 'Selesaikan 50 sesi fokus'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => 'Master Fokus'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => 'Selesaikan 100 sesi fokus'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => 'Pelacak Jujur · Perunggu'; @override - String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + String get achievement_honest_bronze_desc => 'Catat 50 gangguan dengan jujur'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => 'Pelacak Jujur · Perak'; @override String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + 'Catat 200 gangguan dengan jujur'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => 'Pelacak Jujur · Emas'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => 'Catat 500 gangguan dengan jujur'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'Pelari Maraton'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => 'Kumpulkan 10 jam waktu fokus'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'Klub Abad'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => 'Kumpulkan 100 jam waktu fokus'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => 'Grandmaster Fokus'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => 'Kumpulkan 1000 jam waktu fokus'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => 'Bintang Kegigihan'; @override String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + 'Check-in selama 7 hari berturut-turut'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => 'Kebiasaan Bulanan'; @override String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + 'Check-in selama 30 hari berturut-turut'; @override String get achievement_centurion_name => 'Centurion'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => + 'Check-in selama 100 hari berturut-turut'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => 'Pejuang Tahun'; @override String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + 'Check-in selama 365 hari berturut-turut'; + + @override + String get total => 'Total'; + + @override + String get status => 'Status'; + + @override + String get pointsBreakdown => 'Rincian Poin'; + + @override + String get focusTimePoints => 'Waktu Fokus'; + + @override + String get focusTimePointsDesc => '1 poin per menit fokus'; + + @override + String get honestyBonusLabel => 'Bonus Kejujuran'; + + @override + String get honestyBonusDesc => 'Poin tambahan untuk mencatat gangguan'; + + @override + String get checkInPoints => 'Check-in Harian'; + + @override + String get checkInPointsDesc => 'Poin dasar untuk check-in harian'; + + @override + String get streakBonus => 'Bonus Streak'; + + @override + String streakBonusDesc(int days) { + return '$days check-in berturut-turut'; + } + + @override + String get achievementBonusLabel => 'Bonus Pencapaian'; + + @override + String get weekdayS => 'M'; + + @override + String get weekdayM => 'S'; + + @override + String get weekdayT => 'S'; + + @override + String get weekdayW => 'R'; + + @override + String get weekdayTh => 'K'; + + @override + String get weekdayF => 'J'; + + @override + String get weekdaySa => 'S'; } diff --git a/lib/l10n/app_localizations_it.dart b/lib/l10n/app_localizations_it.dart index 4df7634..35e1fe2 100644 --- a/lib/l10n/app_localizations_it.dart +++ b/lib/l10n/app_localizations_it.dart @@ -340,190 +340,258 @@ class AppLocalizationsIt extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => 'Punti'; @override - String get level => 'Level'; + String get level => 'Livello'; @override - String get checked => 'Checked'; + String get checked => 'Registrato'; @override - String get checkIn => 'Check In'; + String get checkIn => 'Check-in'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => 'Guadagnato:'; @override - String get basePoints => 'Base Points'; + String get basePoints => 'Punti Base'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => 'Bonus Onestà'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return 'Punti Totali: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText registrate)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ Obiettivo Sbloccato!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points Punti ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return 'Check-in riuscito! +$points punti ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 Bonus serie settimanale!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ Nuovo obiettivo sbloccato!'; @override String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + 'Hai già fatto il check-in oggi! Torna domani 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'Calendario Check-In 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 Check-in Oggi'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ Check-in Fatto Oggi'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 Serie Attuale'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 Serie Più Lunga'; @override - String get days => 'days'; + String get days => 'giorni'; @override String daysCount(int count) { - return '$count days'; + return '$count giorni'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => 'Obiettivi 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'Vedi Tutti gli Obiettivi'; @override String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + 'Schermata completa degli obiettivi in arrivo!'; @override - String get profile => 'Profile'; + String get profile => 'Profilo'; @override - String get focuser => 'Focuser'; + String get focuser => 'Concentratore'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return '$points punti al Livello $level'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => + 'Principiante della Concentrazione'; @override String get achievement_first_session_desc => - 'Complete your first focus session'; + 'Completa la tua prima sessione di concentrazione'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => 'Inizio'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => + 'Completa 10 sessioni di concentrazione'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => 'Appassionato di Concentrazione'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => + 'Completa 50 sessioni di concentrazione'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => 'Maestro della Concentrazione'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => + 'Completa 100 sessioni di concentrazione'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => 'Tracker Onesto · Bronzo'; @override String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + 'Registra onestamente 50 distrazioni'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => 'Tracker Onesto · Argento'; @override String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + 'Registra onestamente 200 distrazioni'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => 'Tracker Onesto · Oro'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => + 'Registra onestamente 500 distrazioni'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'Maratoneta'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => + 'Accumula 10 ore di tempo di concentrazione'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'Club del Secolo'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => + 'Accumula 100 ore di tempo di concentrazione'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => 'Gran Maestro della Concentrazione'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => + 'Accumula 1000 ore di tempo di concentrazione'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => 'Stella della Persistenza'; @override String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + 'Fai il check-in per 7 giorni consecutivi'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => 'Abitudine Mensile'; @override String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + 'Fai il check-in per 30 giorni consecutivi'; @override - String get achievement_centurion_name => 'Centurion'; + String get achievement_centurion_name => 'Centurione'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => + 'Fai il check-in per 100 giorni consecutivi'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => 'Guerriero dell\'Anno'; @override String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + 'Fai il check-in per 365 giorni consecutivi'; + + @override + String get total => 'Totale'; + + @override + String get status => 'Stato'; + + @override + String get pointsBreakdown => 'Dettaglio Punti'; + + @override + String get focusTimePoints => 'Tempo di Concentrazione'; + + @override + String get focusTimePointsDesc => '1 punto per minuto di concentrazione'; + + @override + String get honestyBonusLabel => 'Bonus Onestà'; + + @override + String get honestyBonusDesc => 'Punti extra per registrare distrazioni'; + + @override + String get checkInPoints => 'Check-in Giornaliero'; + + @override + String get checkInPointsDesc => 'Punti base per check-in giornaliero'; + + @override + String get streakBonus => 'Bonus Serie'; + + @override + String streakBonusDesc(int days) { + return '$days check-in consecutivi'; + } + + @override + String get achievementBonusLabel => 'Bonus Obiettivo'; + + @override + String get weekdayS => 'D'; + + @override + String get weekdayM => 'L'; + + @override + String get weekdayT => 'M'; + + @override + String get weekdayW => 'M'; + + @override + String get weekdayTh => 'G'; + + @override + String get weekdayF => 'V'; + + @override + String get weekdaySa => 'S'; } diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 7cdca72..b50a762 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -331,190 +331,241 @@ class AppLocalizationsJa extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => 'ポイント'; @override - String get level => 'Level'; + String get level => 'レベル'; @override - String get checked => 'Checked'; + String get checked => 'チェック済み'; @override - String get checkIn => 'Check In'; + String get checkIn => 'チェックイン'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => '獲得:'; @override - String get basePoints => 'Base Points'; + String get basePoints => '基本ポイント'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => '正直ボーナス'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return '合計ポイント:$count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText 記録済み)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ 実績解除!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points ポイント ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return 'チェックイン成功!+$points ポイント ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 1週間連続ボーナス!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ 新しい実績解除!'; @override - String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + String get alreadyCheckedIn => '今日は既にチェックイン済みです!明日また来てください 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'チェックインカレンダー 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 今日チェックイン'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ 今日チェックイン済み'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 現在の連続'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 最長連続'; @override - String get days => 'days'; + String get days => '日'; @override String daysCount(int count) { - return '$count days'; + return '$count 日'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => '実績 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'すべての実績を見る'; @override - String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + String get allAchievementsComingSoon => '完全な実績画面は近日公開!'; @override - String get profile => 'Profile'; + String get profile => 'プロフィール'; @override - String get focuser => 'Focuser'; + String get focuser => '集中する人'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return 'レベル $level まであと $points ポイント'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => '集中初心者'; @override - String get achievement_first_session_desc => - 'Complete your first focus session'; + String get achievement_first_session_desc => '最初の集中セッションを完了'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => '入門者'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => '10回の集中セッションを完了'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => '集中愛好家'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => '50回の集中セッションを完了'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => '集中マスター'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => '100回の集中セッションを完了'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => '正直な記録者・ブロンズ'; @override - String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + String get achievement_honest_bronze_desc => '50回の気の散りを正直に記録'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => '正直な記録者・シルバー'; @override - String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + String get achievement_honest_silver_desc => '200回の気の散りを正直に記録'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => '正直な記録者・ゴールド'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => '500回の気の散りを正直に記録'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'マラソンランナー'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => '10時間の集中時間を累積'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'センチュリークラブ'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => '100時間の集中時間を累積'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => '集中グランドマスター'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => '1000時間の集中時間を累積'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => '継続の星'; @override - String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + String get achievement_persistence_star_desc => '7日間連続でチェックイン'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => '月間習慣'; @override - String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + String get achievement_monthly_habit_desc => '30日間連続でチェックイン'; @override - String get achievement_centurion_name => 'Centurion'; + String get achievement_centurion_name => '百日戦士'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => '100日間連続でチェックイン'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => '年間戦士'; @override - String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + String get achievement_year_warrior_desc => '365日間連続でチェックイン'; + + @override + String get total => '合計'; + + @override + String get status => 'ステータス'; + + @override + String get pointsBreakdown => 'ポイント内訳'; + + @override + String get focusTimePoints => '集中時間'; + + @override + String get focusTimePointsDesc => '1分の集中につき1ポイント'; + + @override + String get honestyBonusLabel => '正直ボーナス'; + + @override + String get honestyBonusDesc => '気の散りを記録すると追加ポイント'; + + @override + String get checkInPoints => '毎日チェックイン'; + + @override + String get checkInPointsDesc => '毎日の初回チェックインで基本ポイント'; + + @override + String get streakBonus => '連続ボーナス'; + + @override + String streakBonusDesc(int days) { + return '$days 日連続チェックイン'; + } + + @override + String get achievementBonusLabel => '実績ボーナス'; + + @override + String get weekdayS => '日'; + + @override + String get weekdayM => '月'; + + @override + String get weekdayT => '火'; + + @override + String get weekdayW => '水'; + + @override + String get weekdayTh => '木'; + + @override + String get weekdayF => '金'; + + @override + String get weekdaySa => '土'; } diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index 042e7f2..d17f238 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -332,190 +332,241 @@ class AppLocalizationsKo extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => '포인트'; @override - String get level => 'Level'; + String get level => '레벨'; @override - String get checked => 'Checked'; + String get checked => '체크 완료'; @override - String get checkIn => 'Check In'; + String get checkIn => '체크인'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => '획득:'; @override - String get basePoints => 'Base Points'; + String get basePoints => '기본 포인트'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => '정직 보너스'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return '총 포인트: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText 기록됨)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ 업적 달성!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points 포인트 ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return '체크인 성공! +$points 포인트 ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 주간 연속 보너스!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ 새로운 업적 달성!'; @override - String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + String get alreadyCheckedIn => '오늘 이미 체크인했어요! 내일 다시 오세요 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => '체크인 캘린더 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 오늘 체크인'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ 오늘 체크인 완료'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 현재 연속'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 최장 연속'; @override - String get days => 'days'; + String get days => '일'; @override String daysCount(int count) { - return '$count days'; + return '$count 일'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => '업적 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => '모든 업적 보기'; @override - String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + String get allAchievementsComingSoon => '전체 업적 화면 곧 공개!'; @override - String get profile => 'Profile'; + String get profile => '프로필'; @override - String get focuser => 'Focuser'; + String get focuser => '집중하는 사람'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return '레벨 $level까지 $points 포인트 남음'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => '집중 초보자'; @override - String get achievement_first_session_desc => - 'Complete your first focus session'; + String get achievement_first_session_desc => '첫 집중 세션 완료'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => '시작 단계'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => '10회 집중 세션 완료'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => '집중 애호가'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => '50회 집중 세션 완료'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => '집중 마스터'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => '100회 집중 세션 완료'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => '정직한 기록자 · 브론즈'; @override - String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + String get achievement_honest_bronze_desc => '50회 산만함을 정직하게 기록'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => '정직한 기록자 · 실버'; @override - String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + String get achievement_honest_silver_desc => '200회 산만함을 정직하게 기록'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => '정직한 기록자 · 골드'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => '500회 산만함을 정직하게 기록'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => '마라톤 러너'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => '누적 10시간 집중'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => '센추리 클럽'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => '누적 100시간 집중'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => '집중 그랜드마스터'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => '누적 1000시간 집중'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => '끈기의 별'; @override - String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + String get achievement_persistence_star_desc => '7일 연속 체크인'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => '월간 습관'; @override - String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + String get achievement_monthly_habit_desc => '30일 연속 체크인'; @override - String get achievement_centurion_name => 'Centurion'; + String get achievement_centurion_name => '백일 전사'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => '100일 연속 체크인'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => '연간 전사'; @override - String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + String get achievement_year_warrior_desc => '365일 연속 체크인'; + + @override + String get total => '합계'; + + @override + String get status => '상태'; + + @override + String get pointsBreakdown => '포인트 세부 내역'; + + @override + String get focusTimePoints => '집중 시간'; + + @override + String get focusTimePointsDesc => '1분 집중당 1포인트'; + + @override + String get honestyBonusLabel => '정직 보너스'; + + @override + String get honestyBonusDesc => '산만함 기록 시 추가 포인트'; + + @override + String get checkInPoints => '일일 체크인'; + + @override + String get checkInPointsDesc => '매일 첫 체크인 시 기본 포인트'; + + @override + String get streakBonus => '연속 보너스'; + + @override + String streakBonusDesc(int days) { + return '$days일 연속 체크인'; + } + + @override + String get achievementBonusLabel => '업적 보너스'; + + @override + String get weekdayS => '일'; + + @override + String get weekdayM => '월'; + + @override + String get weekdayT => '화'; + + @override + String get weekdayW => '수'; + + @override + String get weekdayTh => '목'; + + @override + String get weekdayF => '금'; + + @override + String get weekdaySa => '토'; } diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index 5d553fc..d0c10e9 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -337,190 +337,250 @@ class AppLocalizationsPt extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => 'Pontos'; @override - String get level => 'Level'; + String get level => 'Nível'; @override - String get checked => 'Checked'; + String get checked => 'Verificado'; @override - String get checkIn => 'Check In'; + String get checkIn => 'Check-in'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => 'Ganhou:'; @override - String get basePoints => 'Base Points'; + String get basePoints => 'Pontos base'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => 'Bônus de honestidade'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return 'Total de pontos: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText registradas)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ Conquista desbloqueada!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points Pontos ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return 'Check-in bem-sucedido! +$points pontos ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 Bônus de sequência semanal!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ Nova conquista desbloqueada!'; @override - String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + String get alreadyCheckedIn => 'Você já fez check-in hoje! Volte amanhã 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'Calendário de check-in 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 Fazer check-in hoje'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ Check-in feito hoje'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 Sequência atual'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 Maior sequência'; @override - String get days => 'days'; + String get days => 'dias'; @override String daysCount(int count) { - return '$count days'; + return '$count dias'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => 'Conquistas 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'Ver todas as conquistas'; @override String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + 'Tela completa de conquistas em breve!'; @override - String get profile => 'Profile'; + String get profile => 'Perfil'; @override - String get focuser => 'Focuser'; + String get focuser => 'Focador'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return '$points pontos até o nível $level'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => 'Novato em foco'; @override String get achievement_first_session_desc => - 'Complete your first focus session'; + 'Complete sua primeira sessão de foco'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => 'Começando'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => 'Complete 10 sessões de foco'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => 'Entusiasta do foco'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => 'Complete 50 sessões de foco'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => 'Mestre do foco'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => 'Complete 100 sessões de foco'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => 'Rastreador honesto · Bronze'; @override String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + 'Registre 50 distrações honestamente'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => 'Rastreador honesto · Prata'; @override String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + 'Registre 200 distrações honestamente'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => 'Rastreador honesto · Ouro'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => + 'Registre 500 distrações honestamente'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'Corredor de maratona'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => 'Acumule 10 horas de tempo de foco'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'Clube do século'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => 'Acumule 100 horas de tempo de foco'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => 'Grão-mestre do foco'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => 'Acumule 1000 horas de tempo de foco'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => 'Estrela da persistência'; @override String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + 'Faça check-in por 7 dias consecutivos'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => 'Hábito mensal'; @override String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + 'Faça check-in por 30 dias consecutivos'; @override - String get achievement_centurion_name => 'Centurion'; + String get achievement_centurion_name => 'Centurião'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => + 'Faça check-in por 100 dias consecutivos'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => 'Guerreiro do ano'; @override String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + 'Faça check-in por 365 dias consecutivos'; + + @override + String get total => 'Total'; + + @override + String get status => 'Status'; + + @override + String get pointsBreakdown => 'Detalhamento de pontos'; + + @override + String get focusTimePoints => 'Tempo de foco'; + + @override + String get focusTimePointsDesc => '1 ponto por minuto de foco'; + + @override + String get honestyBonusLabel => 'Bônus de honestidade'; + + @override + String get honestyBonusDesc => 'Pontos extras por registrar distrações'; + + @override + String get checkInPoints => 'Check-in diário'; + + @override + String get checkInPointsDesc => 'Pontos base para check-in diário'; + + @override + String get streakBonus => 'Bônus de sequência'; + + @override + String streakBonusDesc(int days) { + return '$days check-ins consecutivos'; + } + + @override + String get achievementBonusLabel => 'Bônus de conquista'; + + @override + String get weekdayS => 'D'; + + @override + String get weekdayM => 'S'; + + @override + String get weekdayT => 'T'; + + @override + String get weekdayW => 'Q'; + + @override + String get weekdayTh => 'Q'; + + @override + String get weekdayF => 'S'; + + @override + String get weekdaySa => 'S'; } diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index 4f7b7e3..205c5d4 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -343,190 +343,247 @@ class AppLocalizationsRu extends AppLocalizations { String get arabic => 'العربية'; @override - String get points => 'Points'; + String get points => 'Очки'; @override - String get level => 'Level'; + String get level => 'Уровень'; @override - String get checked => 'Checked'; + String get checked => 'Отмечено'; @override - String get checkIn => 'Check In'; + String get checkIn => 'Отметиться'; @override - String get earnedPoints => 'Earned:'; + String get earnedPoints => 'Получено:'; @override - String get basePoints => 'Base Points'; + String get basePoints => 'Базовые очки'; @override - String get honestyBonus => 'Honesty Bonus'; + String get honestyBonus => 'Бонус за честность'; @override String totalPoints(int count) { - return 'Total Points: $count ⚡'; + return 'Всего очков: $count ⚡'; } @override String distractionsRecorded(int count, Object distractionText) { - return '($count $distractionText recorded)'; + return '($count $distractionText записано)'; } @override - String get achievementUnlocked => '🎖️ Achievement Unlocked!'; + String get achievementUnlocked => '🎖️ Достижение разблокировано!'; @override String bonusPoints(int points) { - return '+$points Points ⚡'; + return '+$points очков ⚡'; } @override String checkInSuccess(int points) { - return 'Check-in successful! +$points points ⚡'; + return 'Отметка успешна! +$points очков ⚡'; } @override - String get weeklyStreakBonus => '🎉 Weekly streak bonus!'; + String get weeklyStreakBonus => '🎉 Бонус за недельную серию!'; @override - String get newAchievementUnlocked => '🎖️ New achievement unlocked!'; + String get newAchievementUnlocked => '🎖️ Новое достижение разблокировано!'; @override String get alreadyCheckedIn => - 'You have already checked in today! Come back tomorrow 📅'; + 'Вы уже отметились сегодня! Приходите завтра 📅'; @override - String get checkInCalendar => 'Check-In Calendar 📅'; + String get checkInCalendar => 'Календарь отметок 📅'; @override - String get checkInToday => '📅 Check In Today'; + String get checkInToday => '📅 Отметиться сегодня'; @override - String get checkedInToday => '✓ Checked In Today'; + String get checkedInToday => '✓ Отмечен сегодня'; @override - String get currentStreak => '🔥 Current Streak'; + String get currentStreak => '🔥 Текущая серия'; @override - String get longestStreak => '🏆 Longest Streak'; + String get longestStreak => '🏆 Самая длинная серия'; @override - String get days => 'days'; + String get days => 'дней'; @override String daysCount(int count) { - return '$count days'; + return '$count дней'; } @override - String get achievements => 'Achievements 🎖️'; + String get achievements => 'Достижения 🎖️'; @override - String get viewAllAchievements => 'View All Achievements'; + String get viewAllAchievements => 'Посмотреть все достижения'; @override - String get allAchievementsComingSoon => - 'Full achievements screen coming soon!'; + String get allAchievementsComingSoon => 'Полный экран достижений скоро!'; @override - String get profile => 'Profile'; + String get profile => 'Профиль'; @override - String get focuser => 'Focuser'; + String get focuser => 'Сосредоточенный'; @override String pointsToNextLevel(int points, int level) { - return '$points points to Level $level'; + return '$points очков до уровня $level'; } @override - String get achievement_first_session_name => 'Focus Newbie'; + String get achievement_first_session_name => 'Новичок фокуса'; @override String get achievement_first_session_desc => - 'Complete your first focus session'; + 'Завершите первую сессию фокусировки'; @override - String get achievement_sessions_10_name => 'Getting Started'; + String get achievement_sessions_10_name => 'Начало'; @override - String get achievement_sessions_10_desc => 'Complete 10 focus sessions'; + String get achievement_sessions_10_desc => 'Завершите 10 сессий фокусировки'; @override - String get achievement_sessions_50_name => 'Focus Enthusiast'; + String get achievement_sessions_50_name => 'Энтузиаст фокуса'; @override - String get achievement_sessions_50_desc => 'Complete 50 focus sessions'; + String get achievement_sessions_50_desc => 'Завершите 50 сессий фокусировки'; @override - String get achievement_sessions_100_name => 'Focus Master'; + String get achievement_sessions_100_name => 'Мастер фокуса'; @override - String get achievement_sessions_100_desc => 'Complete 100 focus sessions'; + String get achievement_sessions_100_desc => + 'Завершите 100 сессий фокусировки'; @override - String get achievement_honest_bronze_name => 'Honest Tracker · Bronze'; + String get achievement_honest_bronze_name => 'Честный трекер · Бронза'; @override - String get achievement_honest_bronze_desc => - 'Record 50 distractions honestly'; + String get achievement_honest_bronze_desc => 'Честно запишите 50 отвлечений'; @override - String get achievement_honest_silver_name => 'Honest Tracker · Silver'; + String get achievement_honest_silver_name => 'Честный трекер · Серебро'; @override - String get achievement_honest_silver_desc => - 'Record 200 distractions honestly'; + String get achievement_honest_silver_desc => 'Честно запишите 200 отвлечений'; @override - String get achievement_honest_gold_name => 'Honest Tracker · Gold'; + String get achievement_honest_gold_name => 'Честный трекер · Золото'; @override - String get achievement_honest_gold_desc => 'Record 500 distractions honestly'; + String get achievement_honest_gold_desc => 'Честно запишите 500 отвлечений'; @override - String get achievement_marathon_name => 'Marathon Runner'; + String get achievement_marathon_name => 'Марафонец'; @override - String get achievement_marathon_desc => 'Accumulate 10 hours of focus time'; + String get achievement_marathon_desc => + 'Накопите 10 часов времени фокусировки'; @override - String get achievement_century_name => 'Century Club'; + String get achievement_century_name => 'Клуб столетия'; @override - String get achievement_century_desc => 'Accumulate 100 hours of focus time'; + String get achievement_century_desc => + 'Накопите 100 часов времени фокусировки'; @override - String get achievement_master_name => 'Focus Grandmaster'; + String get achievement_master_name => 'Гроссмейстер фокуса'; @override - String get achievement_master_desc => 'Accumulate 1000 hours of focus time'; + String get achievement_master_desc => + 'Накопите 1000 часов времени фокусировки'; @override - String get achievement_persistence_star_name => 'Persistence Star'; + String get achievement_persistence_star_name => 'Звезда упорства'; @override - String get achievement_persistence_star_desc => - 'Check in for 7 consecutive days'; + String get achievement_persistence_star_desc => 'Отмечайтесь 7 дней подряд'; @override - String get achievement_monthly_habit_name => 'Monthly Habit'; + String get achievement_monthly_habit_name => 'Месячная привычка'; @override - String get achievement_monthly_habit_desc => - 'Check in for 30 consecutive days'; + String get achievement_monthly_habit_desc => 'Отмечайтесь 30 дней подряд'; @override - String get achievement_centurion_name => 'Centurion'; + String get achievement_centurion_name => 'Центурион'; @override - String get achievement_centurion_desc => 'Check in for 100 consecutive days'; + String get achievement_centurion_desc => 'Отмечайтесь 100 дней подряд'; @override - String get achievement_year_warrior_name => 'Year Warrior'; + String get achievement_year_warrior_name => 'Воин года'; @override - String get achievement_year_warrior_desc => - 'Check in for 365 consecutive days'; + String get achievement_year_warrior_desc => 'Отмечайтесь 365 дней подряд'; + + @override + String get total => 'Всего'; + + @override + String get status => 'Статус'; + + @override + String get pointsBreakdown => 'Разбивка очков'; + + @override + String get focusTimePoints => 'Время фокусировки'; + + @override + String get focusTimePointsDesc => '1 очко за минуту фокусировки'; + + @override + String get honestyBonusLabel => 'Бонус за честность'; + + @override + String get honestyBonusDesc => 'Дополнительные очки за запись отвлечений'; + + @override + String get checkInPoints => 'Ежедневная отметка'; + + @override + String get checkInPointsDesc => 'Базовые очки за ежедневную отметку'; + + @override + String get streakBonus => 'Бонус за серию'; + + @override + String streakBonusDesc(int days) { + return '$days дней подряд'; + } + + @override + String get achievementBonusLabel => 'Бонус за достижение'; + + @override + String get weekdayS => 'В'; + + @override + String get weekdayM => 'П'; + + @override + String get weekdayT => 'В'; + + @override + String get weekdayW => 'С'; + + @override + String get weekdayTh => 'Ч'; + + @override + String get weekdayF => 'П'; + + @override + String get weekdaySa => 'С'; } diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index b748098..bb2d20b 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -506,4 +506,63 @@ class AppLocalizationsZh extends AppLocalizations { @override String get achievement_year_warrior_desc => '连续签到 365 天'; + + @override + String get total => '总计'; + + @override + String get status => '状态'; + + @override + String get pointsBreakdown => '积分明细'; + + @override + String get focusTimePoints => '专注时长'; + + @override + String get focusTimePointsDesc => '每专注1分钟获得1积分'; + + @override + String get honestyBonusLabel => '诚实奖励'; + + @override + String get honestyBonusDesc => '记录分心情况获得额外积分'; + + @override + String get checkInPoints => '每日签到'; + + @override + String get checkInPointsDesc => '每日首次签到获得基础积分'; + + @override + String get streakBonus => '连续签到奖励'; + + @override + String streakBonusDesc(int days) { + return '连续签到 $days 天'; + } + + @override + String get achievementBonusLabel => '成就奖励'; + + @override + String get weekdayS => '日'; + + @override + String get weekdayM => '一'; + + @override + String get weekdayT => '二'; + + @override + String get weekdayW => '三'; + + @override + String get weekdayTh => '四'; + + @override + String get weekdayF => '五'; + + @override + String get weekdaySa => '六'; } diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index b683248..c159d0a 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "Pontos", + "level": "Nível", + "checked": "Verificado", + "checkIn": "Check-in", + "earnedPoints": "Ganhou:", + "basePoints": "Pontos base", + "honestyBonus": "Bônus de honestidade", + "totalPoints": "Total de pontos: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} registradas)", + "achievementUnlocked": "🎖️ Conquista desbloqueada!", + "bonusPoints": "+{points} Pontos ⚡", + "checkInSuccess": "Check-in bem-sucedido! +{points} pontos ⚡", + "weeklyStreakBonus": "🎉 Bônus de sequência semanal!", + "newAchievementUnlocked": "🎖️ Nova conquista desbloqueada!", + "alreadyCheckedIn": "Você já fez check-in hoje! Volte amanhã 📅", + "checkInCalendar": "Calendário de check-in 📅", + "checkInToday": "📅 Fazer check-in hoje", + "checkedInToday": "✓ Check-in feito hoje", + "currentStreak": "🔥 Sequência atual", + "longestStreak": "🏆 Maior sequência", + "days": "dias", + "daysCount": "{count} dias", + "achievements": "Conquistas 🎖️", + "viewAllAchievements": "Ver todas as conquistas", + "allAchievementsComingSoon": "Tela completa de conquistas em breve!", + "profile": "Perfil", + "focuser": "Focador", + "pointsToNextLevel": "{points} pontos até o nível {level}", + + "achievement_first_session_name": "Novato em foco", + "achievement_first_session_desc": "Complete sua primeira sessão de foco", + "achievement_sessions_10_name": "Começando", + "achievement_sessions_10_desc": "Complete 10 sessões de foco", + "achievement_sessions_50_name": "Entusiasta do foco", + "achievement_sessions_50_desc": "Complete 50 sessões de foco", + "achievement_sessions_100_name": "Mestre do foco", + "achievement_sessions_100_desc": "Complete 100 sessões de foco", + "achievement_honest_bronze_name": "Rastreador honesto · Bronze", + "achievement_honest_bronze_desc": "Registre 50 distrações honestamente", + "achievement_honest_silver_name": "Rastreador honesto · Prata", + "achievement_honest_silver_desc": "Registre 200 distrações honestamente", + "achievement_honest_gold_name": "Rastreador honesto · Ouro", + "achievement_honest_gold_desc": "Registre 500 distrações honestamente", + "achievement_marathon_name": "Corredor de maratona", + "achievement_marathon_desc": "Acumule 10 horas de tempo de foco", + "achievement_century_name": "Clube do século", + "achievement_century_desc": "Acumule 100 horas de tempo de foco", + "achievement_master_name": "Grão-mestre do foco", + "achievement_master_desc": "Acumule 1000 horas de tempo de foco", + "achievement_persistence_star_name": "Estrela da persistência", + "achievement_persistence_star_desc": "Faça check-in por 7 dias consecutivos", + "achievement_monthly_habit_name": "Hábito mensal", + "achievement_monthly_habit_desc": "Faça check-in por 30 dias consecutivos", + "achievement_centurion_name": "Centurião", + "achievement_centurion_desc": "Faça check-in por 100 dias consecutivos", + "achievement_year_warrior_name": "Guerreiro do ano", + "achievement_year_warrior_desc": "Faça check-in por 365 dias consecutivos", + + "total": "Total", + "status": "Status", + "pointsBreakdown": "Detalhamento de pontos", + "focusTimePoints": "Tempo de foco", + "focusTimePointsDesc": "1 ponto por minuto de foco", + "honestyBonusLabel": "Bônus de honestidade", + "honestyBonusDesc": "Pontos extras por registrar distrações", + "checkInPoints": "Check-in diário", + "checkInPointsDesc": "Pontos base para check-in diário", + "streakBonus": "Bônus de sequência", + "streakBonusDesc": "{days} check-ins consecutivos", + "achievementBonusLabel": "Bônus de conquista", + + "weekdayS": "D", + "weekdayM": "S", + "weekdayT": "T", + "weekdayW": "Q", + "weekdayTh": "Q", + "weekdayF": "S", + "weekdaySa": "S" } diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index ba20f9e..41de70a 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -121,5 +121,84 @@ "hindi": "हिन्दी", "indonesian": "Bahasa Indonesia", "italian": "Italiano", - "arabic": "العربية" + "arabic": "العربية", + + "points": "Очки", + "level": "Уровень", + "checked": "Отмечено", + "checkIn": "Отметиться", + "earnedPoints": "Получено:", + "basePoints": "Базовые очки", + "honestyBonus": "Бонус за честность", + "totalPoints": "Всего очков: {count} ⚡", + "distractionsRecorded": "({count} {distractionText} записано)", + "achievementUnlocked": "🎖️ Достижение разблокировано!", + "bonusPoints": "+{points} очков ⚡", + "checkInSuccess": "Отметка успешна! +{points} очков ⚡", + "weeklyStreakBonus": "🎉 Бонус за недельную серию!", + "newAchievementUnlocked": "🎖️ Новое достижение разблокировано!", + "alreadyCheckedIn": "Вы уже отметились сегодня! Приходите завтра 📅", + "checkInCalendar": "Календарь отметок 📅", + "checkInToday": "📅 Отметиться сегодня", + "checkedInToday": "✓ Отмечен сегодня", + "currentStreak": "🔥 Текущая серия", + "longestStreak": "🏆 Самая длинная серия", + "days": "дней", + "daysCount": "{count} дней", + "achievements": "Достижения 🎖️", + "viewAllAchievements": "Посмотреть все достижения", + "allAchievementsComingSoon": "Полный экран достижений скоро!", + "profile": "Профиль", + "focuser": "Сосредоточенный", + "pointsToNextLevel": "{points} очков до уровня {level}", + + "achievement_first_session_name": "Новичок фокуса", + "achievement_first_session_desc": "Завершите первую сессию фокусировки", + "achievement_sessions_10_name": "Начало", + "achievement_sessions_10_desc": "Завершите 10 сессий фокусировки", + "achievement_sessions_50_name": "Энтузиаст фокуса", + "achievement_sessions_50_desc": "Завершите 50 сессий фокусировки", + "achievement_sessions_100_name": "Мастер фокуса", + "achievement_sessions_100_desc": "Завершите 100 сессий фокусировки", + "achievement_honest_bronze_name": "Честный трекер · Бронза", + "achievement_honest_bronze_desc": "Честно запишите 50 отвлечений", + "achievement_honest_silver_name": "Честный трекер · Серебро", + "achievement_honest_silver_desc": "Честно запишите 200 отвлечений", + "achievement_honest_gold_name": "Честный трекер · Золото", + "achievement_honest_gold_desc": "Честно запишите 500 отвлечений", + "achievement_marathon_name": "Марафонец", + "achievement_marathon_desc": "Накопите 10 часов времени фокусировки", + "achievement_century_name": "Клуб столетия", + "achievement_century_desc": "Накопите 100 часов времени фокусировки", + "achievement_master_name": "Гроссмейстер фокуса", + "achievement_master_desc": "Накопите 1000 часов времени фокусировки", + "achievement_persistence_star_name": "Звезда упорства", + "achievement_persistence_star_desc": "Отмечайтесь 7 дней подряд", + "achievement_monthly_habit_name": "Месячная привычка", + "achievement_monthly_habit_desc": "Отмечайтесь 30 дней подряд", + "achievement_centurion_name": "Центурион", + "achievement_centurion_desc": "Отмечайтесь 100 дней подряд", + "achievement_year_warrior_name": "Воин года", + "achievement_year_warrior_desc": "Отмечайтесь 365 дней подряд", + + "total": "Всего", + "status": "Статус", + "pointsBreakdown": "Разбивка очков", + "focusTimePoints": "Время фокусировки", + "focusTimePointsDesc": "1 очко за минуту фокусировки", + "honestyBonusLabel": "Бонус за честность", + "honestyBonusDesc": "Дополнительные очки за запись отвлечений", + "checkInPoints": "Ежедневная отметка", + "checkInPointsDesc": "Базовые очки за ежедневную отметку", + "streakBonus": "Бонус за серию", + "streakBonusDesc": "{days} дней подряд", + "achievementBonusLabel": "Бонус за достижение", + + "weekdayS": "В", + "weekdayM": "П", + "weekdayT": "В", + "weekdayW": "С", + "weekdayTh": "Ч", + "weekdayF": "П", + "weekdaySa": "С" } diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 0d07a35..67d6e08 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -179,5 +179,26 @@ "achievement_centurion_name": "百日勇士", "achievement_centurion_desc": "连续签到 100 天", "achievement_year_warrior_name": "年度战士", - "achievement_year_warrior_desc": "连续签到 365 天" + "achievement_year_warrior_desc": "连续签到 365 天", + + "total": "总计", + "status": "状态", + "pointsBreakdown": "积分明细", + "focusTimePoints": "专注时长", + "focusTimePointsDesc": "每专注1分钟获得1积分", + "honestyBonusLabel": "诚实奖励", + "honestyBonusDesc": "记录分心情况获得额外积分", + "checkInPoints": "每日签到", + "checkInPointsDesc": "每日首次签到获得基础积分", + "streakBonus": "连续签到奖励", + "streakBonusDesc": "连续签到 {days} 天", + "achievementBonusLabel": "成就奖励", + + "weekdayS": "日", + "weekdayM": "一", + "weekdayT": "二", + "weekdayW": "三", + "weekdayTh": "四", + "weekdayF": "五", + "weekdaySa": "六" } diff --git a/lib/screens/history_screen.dart b/lib/screens/history_screen.dart index 49526e6..f8db5fa 100644 --- a/lib/screens/history_screen.dart +++ b/lib/screens/history_screen.dart @@ -98,7 +98,7 @@ class _HistoryScreenState extends State { const SizedBox(height: 32), ElevatedButton( onPressed: () => Navigator.pop(context), - child: const Text('Start Focusing'), + child: Text(l10n.startFocusing), ), ], ), @@ -159,7 +159,7 @@ class _HistoryScreenState extends State { children: [ Expanded( child: _buildStat( - 'Total', + l10n.total, l10n.minutesValue(totalMins, l10n.minutes(totalMins)), '⏱️', ), @@ -167,7 +167,7 @@ class _HistoryScreenState extends State { const SizedBox(width: 16), Expanded( child: _buildStat( - 'Distractions', + l10n.distractions(distractions), l10n.distractionsCount( distractions, l10n.times(distractions), diff --git a/lib/screens/profile_screen.dart b/lib/screens/profile_screen.dart index 5fed059..4afcd01 100644 --- a/lib/screens/profile_screen.dart +++ b/lib/screens/profile_screen.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import '../l10n/app_localizations.dart'; import '../theme/app_colors.dart'; +import '../theme/app_constants.dart'; import '../services/storage_service.dart'; import '../services/points_service.dart'; import '../services/achievement_service.dart'; @@ -418,14 +419,14 @@ class _ProfileScreenState extends State { const SizedBox(height: 16), // Calendar grid (last 28 days) - _buildCalendarGrid(), + _buildCalendarGrid(l10n), ], ), ); } /// Build calendar grid showing check-in history - Widget _buildCalendarGrid() { + Widget _buildCalendarGrid(AppLocalizations l10n) { final now = DateTime.now(); final today = DateTime(now.year, now.month, now.day); @@ -434,16 +435,24 @@ class _ProfileScreenState extends State { // Weekday labels Row( mainAxisAlignment: MainAxisAlignment.spaceAround, - children: ['S', 'M', 'T', 'W', 'T', 'F', 'S'] + children: [ + l10n.weekdayS, + l10n.weekdayM, + l10n.weekdayT, + l10n.weekdayW, + l10n.weekdayTh, + l10n.weekdayF, + l10n.weekdaySa, + ] .map( (day) => SizedBox( - width: 40, + width: ProfileConstants.calendarCellSize, child: Center( child: Text( day, - style: const TextStyle( + style: TextStyle( fontFamily: 'Nunito', - fontSize: 12, + fontSize: FontSizes.caption, fontWeight: FontWeight.w600, color: AppColors.textSecondary, ), diff --git a/lib/screens/session_detail_screen.dart b/lib/screens/session_detail_screen.dart index 5b56896..48fef28 100644 --- a/lib/screens/session_detail_screen.dart +++ b/lib/screens/session_detail_screen.dart @@ -115,7 +115,7 @@ class SessionDetailScreen extends StatelessWidget { _buildStatRow( icon: '🤚', - label: 'Distractions', + label: l10n.distractions(session.distractionCount), value: '${session.distractionCount} ${l10n.times(session.distractionCount)}', ), @@ -123,7 +123,7 @@ class SessionDetailScreen extends StatelessWidget { _buildStatRow( icon: '🏁', - label: 'Status', + label: l10n.status, value: session.completed ? l10n.completed : l10n.stoppedEarly, diff --git a/lib/services/points_service.dart b/lib/services/points_service.dart index 617a68f..490ccbe 100644 --- a/lib/services/points_service.dart +++ b/lib/services/points_service.dart @@ -6,6 +6,7 @@ import '../models/user_progress.dart'; class PointsService { /// Calculate points earned from a focus session /// Returns a map with breakdown: {basePoints, honestyBonus, total, breakdown} + /// Note: breakdown contains labelKey and descriptionKey for localization Map calculateSessionPoints(FocusSession session) { // Base points = actual minutes focused int basePoints = session.actualMinutes; @@ -18,17 +19,17 @@ class PointsService { int total = basePoints + honestyBonus; - // Detailed breakdown for UI display + // Detailed breakdown for UI display (using localization keys) List> breakdown = [ { - 'label': '专注时长', + 'labelKey': 'focusTimePoints', 'value': basePoints, - 'description': '每专注1分钟获得1积分', + 'descriptionKey': 'focusTimePointsDesc', }, { - 'label': '诚实奖励', + 'labelKey': 'honestyBonusLabel', 'value': honestyBonus, - 'description': '记录分心情况获得额外积分', + 'descriptionKey': 'honestyBonusDesc', }, ]; @@ -56,6 +57,7 @@ class PointsService { } /// Process daily check-in and return points earned with detailed breakdown + /// Note: breakdown contains labelKey and descriptionKey for localization Map processCheckIn(UserProgress progress) { final now = DateTime.now(); @@ -63,32 +65,34 @@ class PointsService { int points = 5; List> breakdown = [ { - 'label': '每日签到', + 'labelKey': 'checkInPoints', 'value': 5, - 'description': '每日首次签到获得基础积分', + 'descriptionKey': 'checkInPointsDesc', }, ]; // Update check-in streak if (_isConsecutiveDay(progress.lastCheckInDate, now)) { progress.consecutiveCheckIns++; - + // Bonus for streak milestones if (progress.consecutiveCheckIns % 7 == 0) { int weeklyBonus = 30; points += weeklyBonus; breakdown.add({ - 'label': '连续签到奖励', + 'labelKey': 'streakBonus', 'value': weeklyBonus, - 'description': '连续签到${progress.consecutiveCheckIns}天', + 'descriptionKey': 'streakBonusDesc', + 'descriptionParams': {'days': progress.consecutiveCheckIns}, }); } else if (progress.consecutiveCheckIns % 30 == 0) { int monthlyBonus = 100; points += monthlyBonus; breakdown.add({ - 'label': '连续签到奖励', + 'labelKey': 'streakBonus', 'value': monthlyBonus, - 'description': '连续签到${progress.consecutiveCheckIns}天', + 'descriptionKey': 'streakBonusDesc', + 'descriptionParams': {'days': progress.consecutiveCheckIns}, }); } } else { @@ -157,4 +161,4 @@ class PointsService { 'totalCheckIns': progress.checkInHistory.length, }; } -} +} diff --git a/lib/theme/app_constants.dart b/lib/theme/app_constants.dart new file mode 100644 index 0000000..88fd6c9 --- /dev/null +++ b/lib/theme/app_constants.dart @@ -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 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; +}