import 'package:flutter/material.dart';

class AppLocalizations {
  final Locale locale;

  AppLocalizations(this.locale);

  static AppLocalizations? of(BuildContext context) {
    return Localizations.of<AppLocalizations>(context, AppLocalizations);
  }

  static const LocalizationsDelegate<AppLocalizations> delegate =
      _AppLocalizationsDelegate();

  static const List<Locale> supportedLocales = [
    Locale('pt', 'PT'), // Portuguese (Portugal)
    Locale('en', 'US'), // English (United States)
  ];

  static const Locale fallbackLocale = Locale('pt', 'PT');

  // App
  String get appTitle => 'Assistente de Estudo IA';
  String get schoolName => 'Escola Profissional de Vila do Conde';

  // Login
  String get welcomeBack => 'Bem-vindo de volta';
  String get signInToContinue => 'Inicie sessão para continuar a aprender';
  String get email => 'Email';
  String get password => 'Palavra-passe';
  String get enterYourEmail => 'Introduza o seu email';
  String get enterYourPassword => 'Introduza a sua palavra-passe';
  String get signIn => 'Iniciar Sessão';
  String get dontHaveAccount => 'Não tem uma conta? ';
  String get signUp => 'Registar-se';

  // Sign Up
  String get createAccount => 'Criar Conta';
  String get joinOurCommunity => 'Junte-se à nossa comunidade de aprendizagem';
  String get confirmPassword => 'Confirmar palavra-passe';
  String get confirmYourPassword => 'Confirme a sua palavra-passe';
  String get signUpButton => 'Registar';
  String get alreadyHaveAccount => 'Já tem uma conta? ';
  String get login => 'Iniciar Sessão';

  // Dashboard
  String get studentDashboard => 'Painel do Aluno';
  String get teacherDashboard => 'Painel do Professor';
  String get aiTutor => 'Tutor IA';
  String get quizzes => 'Questionários';
  String get profile => 'Perfil';

  // General
  String get pageNotFound => 'Página Não Encontrada';
  String get loading => 'A carregar...';

  // Error messages
  String get pleaseEnterEmail => 'Por favor, introduza o seu email';
  String get pleaseEnterValidEmail => 'Por favor, introduza um email válido';
  String get pleaseEnterPassword => 'Por favor, introduza a sua palavra-passe';
  String get passwordTooShort => 'A palavra-passe deve ter pelo menos 6 caracteres';
  String get passwordsDoNotMatch => 'As palavras-passe não coincidem';
  String get loginFailed => 'Falha no início de sessão';
  String get signupFailed => 'Falha no registo';
}

class _AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
  const _AppLocalizationsDelegate();

  @override
  bool isSupported(Locale locale) {
    return ['pt', 'en'].contains(locale.languageCode);
  }

  @override
  Future<AppLocalizations> load(Locale locale) async {
    return AppLocalizations(locale);
  }

  @override
  bool shouldReload(LocalizationsDelegate<AppLocalizations> old) => false;
}
