initalizing the mobile apps

This commit is contained in:
Achintha Isuru
2026-01-21 15:42:51 -05:00
parent fbadd976cf
commit 4a67b2f541
578 changed files with 28462 additions and 2 deletions

View File

@@ -0,0 +1,10 @@
export 'src/bloc/locale_bloc.dart';
export 'src/bloc/locale_event.dart';
export 'src/bloc/locale_state.dart';
export 'src/l10n/strings.g.dart';
export 'src/domain/repositories/locale_repository_interface.dart';
export 'src/domain/usecases/get_locale_use_case.dart';
export 'src/domain/usecases/set_locale_use_case.dart';
export 'src/data/repositories_impl/locale_repository_impl.dart';
export 'src/data/datasources/locale_local_data_source.dart';
export 'src/localization_module.dart';

View File

@@ -0,0 +1,56 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../domain/usecases/get_locale_use_case.dart';
import '../domain/usecases/set_locale_use_case.dart';
import '../l10n/strings.g.dart';
import 'locale_event.dart';
import 'locale_state.dart';
/// A [Bloc] that manages the application's locale state.
///
/// It coordinates the flow between user language requests and persistent storage
/// using [SetLocaleUseCase] and [GetLocaleUseCase].
class LocaleBloc extends Bloc<LocaleEvent, LocaleState> {
final GetLocaleUseCase getLocaleUseCase;
final SetLocaleUseCase setLocaleUseCase;
/// Creates a [LocaleBloc] with the required use cases.
LocaleBloc({required this.getLocaleUseCase, required this.setLocaleUseCase})
: super(LocaleState.initial()) {
on<ChangeLocale>(_onChangeLocale);
on<LoadLocale>(_onLoadLocale);
}
/// Handles the [ChangeLocale] event by saving it via the use case and emitting new state.
Future<void> _onChangeLocale(
ChangeLocale event,
Emitter<LocaleState> emit,
) async {
// 1. Update slang settings
LocaleSettings.setLocaleRaw(event.locale.languageCode);
// 2. Persist using Use Case
await setLocaleUseCase(event.locale);
// 3. Emit new state
emit(
LocaleState(
locale: event.locale,
supportedLocales: state.supportedLocales,
),
);
}
/// Handles the [LoadLocale] event by retrieving it via the use case and updating settings.
Future<void> _onLoadLocale(
LoadLocale event,
Emitter<LocaleState> emit,
) async {
final savedLocale = await getLocaleUseCase();
final locale = const Locale('es');
LocaleSettings.setLocaleRaw(locale.languageCode);
emit(LocaleState(locale: locale, supportedLocales: state.supportedLocales));
}
}

View File

@@ -0,0 +1,22 @@
import 'package:flutter/material.dart';
/// Base class for all locale-related events.
sealed class LocaleEvent {
/// Creates a [LocaleEvent].
const LocaleEvent();
}
/// Event triggered when the user wants to change the application locale.
class ChangeLocale extends LocaleEvent {
/// The new locale to apply.
final Locale locale;
/// Creates a [ChangeLocale] event.
const ChangeLocale(this.locale);
}
/// Event triggered to load the saved locale from persistent storage.
class LoadLocale extends LocaleEvent {
/// Creates a [LoadLocale] event.
const LoadLocale();
}

View File

@@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
import '../l10n/strings.g.dart';
/// Represents the current state of the application's localization.
class LocaleState {
/// The current active locale.
final Locale locale;
/// The list of supported locales for the application.
final List<Locale> supportedLocales;
/// Creates a [LocaleState] with the specified [locale].
const LocaleState({required this.locale, required this.supportedLocales});
/// The initial state of the application, defaulting to English.
factory LocaleState.initial() => LocaleState(
locale: const Locale('es'),
supportedLocales: AppLocaleUtils.supportedLocales,
);
}

View File

@@ -0,0 +1,29 @@
import 'package:shared_preferences/shared_preferences.dart';
/// Interface for the local data source that manages locale persistence.
abstract interface class LocaleLocalDataSource {
/// Saves the language code to local storage.
Future<void> saveLanguageCode(String languageCode);
/// Retrieves the saved language code from local storage.
Future<String?> getLanguageCode();
}
/// Implementation of [LocaleLocalDataSource] using [SharedPreferencesAsync].
class LocaleLocalDataSourceImpl implements LocaleLocalDataSource {
static const String _localeKey = 'app_locale';
final SharedPreferencesAsync _sharedPreferences;
/// Creates a [LocaleLocalDataSourceImpl] with the required [SharedPreferencesAsync] instance.
LocaleLocalDataSourceImpl(this._sharedPreferences);
@override
Future<void> saveLanguageCode(String languageCode) async {
await _sharedPreferences.setString(_localeKey, languageCode);
}
@override
Future<String?> getLanguageCode() async {
return _sharedPreferences.getString(_localeKey);
}
}

View File

@@ -0,0 +1,28 @@
import 'dart:ui';
import '../../domain/repositories/locale_repository_interface.dart';
import '../datasources/locale_local_data_source.dart';
/// Implementation of [LocaleRepositoryInterface] that coordinates with a local data source.
///
/// This class handles the mapping between domain [Locale] objects and the raw
/// strings handled by the [LocaleLocalDataSource].
class LocaleRepositoryImpl implements LocaleRepositoryInterface {
final LocaleLocalDataSource _localDataSource;
/// Creates a [LocaleRepositoryImpl] with the provided [_localDataSource].
LocaleRepositoryImpl(this._localDataSource);
@override
Future<void> saveLocale(Locale locale) {
return _localDataSource.saveLanguageCode(locale.languageCode);
}
@override
Future<Locale?> getSavedLocale() async {
final languageCode = await _localDataSource.getLanguageCode();
if (languageCode != null) {
return Locale(languageCode);
}
return null;
}
}

View File

@@ -0,0 +1,17 @@
import 'dart:ui';
/// Interface for the locale repository.
///
/// This defines the contracts for persisting and retrieving the application's locale.
/// Implementations of this interface should handle the details of the storage mechanism.
abstract interface class LocaleRepositoryInterface {
/// Saves the specified [locale] to persistent storage.
///
/// Throws a [RepositoryException] if the operation fails.
Future<void> saveLocale(Locale locale);
/// Retrieves the saved [locale] from persistent storage.
///
/// Returns `null` if no locale has been previously saved.
Future<Locale?> getSavedLocale();
}

View File

@@ -0,0 +1,19 @@
import 'dart:ui';
import 'package:krow_core/core.dart';
import '../repositories/locale_repository_interface.dart';
/// Use case to retrieve the persisted application locale.
///
/// This class extends [NoInputUseCase] and interacts with [LocaleRepositoryInterface]
/// to fetch the saved locale.
class GetLocaleUseCase extends NoInputUseCase<Locale?> {
final LocaleRepositoryInterface _repository;
/// Creates a [GetLocaleUseCase] with the required [LocaleRepositoryInterface].
GetLocaleUseCase(this._repository);
@override
Future<Locale?> call() {
return _repository.getSavedLocale();
}
}

View File

@@ -0,0 +1,19 @@
import 'dart:ui';
import 'package:krow_core/core.dart';
import '../repositories/locale_repository_interface.dart';
/// Use case to save the application locale to persistent storage.
///
/// This class extends [UseCase] and interacts with [LocaleRepositoryInterface]
/// to save a given locale.
class SetLocaleUseCase extends UseCase<Locale, void> {
final LocaleRepositoryInterface _repository;
/// Creates a [SetLocaleUseCase] with the required [LocaleRepositoryInterface].
SetLocaleUseCase(this._repository);
@override
Future<void> call(Locale input) {
return _repository.saveLocale(input);
}
}

View File

@@ -0,0 +1,190 @@
{
"common": {
"ok": "OK",
"cancel": "Cancel",
"save": "Save",
"delete": "Delete",
"continue_text": "Continue"
},
"settings": {
"language": "Language",
"change_language": "Change Language"
},
"staff_authentication": {
"get_started_page": {
"title_part1": "Work, Grow, ",
"title_part2": "Elevate",
"subtitle": "Build your career in hospitality with \nflexibility and freedom.",
"sign_up_button": "Sign Up",
"log_in_button": "Log In"
},
"phone_verification_page": {
"validation_error": "Please enter a valid 10-digit phone number",
"send_code_button": "Send Code",
"enter_code_title": "Enter verification code",
"code_sent_message": "We sent a 6-digit code to ",
"code_sent_instruction": ". Enter it below to verify your account."
},
"phone_input": {
"title": "Verify your phone number",
"subtitle": "We'll send you a verification code to get started.",
"label": "Phone Number",
"hint": "Enter your number"
},
"otp_verification": {
"did_not_get_code": "Didn't get the code ?",
"resend_in": "Resend in $seconds s",
"resend_code": "Resend code"
},
"profile_setup_page": {
"step_indicator": "Step $current of $total",
"error_occurred": "An error occurred",
"complete_setup_button": "Complete Setup",
"steps": {
"basic": "Basic Info",
"location": "Location",
"experience": "Experience"
},
"basic_info": {
"title": "Let's get to know you",
"subtitle": "Tell us a bit about yourself",
"full_name_label": "Full Name *",
"full_name_hint": "John Smith",
"bio_label": "Short Bio",
"bio_hint": "Experienced hospitality professional..."
},
"location": {
"title": "Where do you want to work?",
"subtitle": "Add your preferred work locations",
"add_location_label": "Add Location *",
"add_location_hint": "City or ZIP code",
"add_button": "Add",
"max_distance": "Max Distance: $distance miles",
"min_dist_label": "5 mi",
"max_dist_label": "50 mi"
},
"experience": {
"title": "What are your skills?",
"subtitle": "Select all that apply",
"skills_label": "Skills *",
"industries_label": "Preferred Industries",
"skills": {
"food_service": "Food Service",
"bartending": "Bartending",
"warehouse": "Warehouse",
"retail": "Retail",
"events": "Events",
"customer_service": "Customer Service",
"cleaning": "Cleaning",
"security": "Security",
"driving": "Driving",
"cooking": "Cooking"
},
"industries": {
"hospitality": "Hospitality",
"food_service": "Food Service",
"warehouse": "Warehouse",
"events": "Events",
"retail": "Retail",
"healthcare": "Healthcare"
}
}
},
"common": {
"trouble_question": "Having trouble? ",
"contact_support": "Contact Support"
}
},
"client_authentication": {
"get_started_page": {
"title": "Take Control of Your\nShifts and Events",
"subtitle": "Streamline your operations with powerful tools to manage schedules, track performance, and keep your team on the same page—all in one place",
"sign_in_button": "Sign In",
"create_account_button": "Create Account"
},
"sign_in_page": {
"title": "Welcome Back",
"subtitle": "Sign in to manage your shifts and workers",
"email_label": "Email",
"email_hint": "Enter your email",
"password_label": "Password",
"password_hint": "Enter your password",
"forgot_password": "Forgot Password?",
"sign_in_button": "Sign In",
"or_divider": "or",
"social_apple": "Sign In with Apple",
"social_google": "Sign In with Google",
"no_account": "Don't have an account? ",
"sign_up_link": "Sign Up"
},
"sign_up_page": {
"title": "Create Account",
"subtitle": "Get started with Krow for your business",
"company_label": "Company Name",
"company_hint": "Enter company name",
"email_label": "Email",
"email_hint": "Enter your email",
"password_label": "Password",
"password_hint": "Create a password",
"confirm_password_label": "Confirm Password",
"confirm_password_hint": "Confirm your password",
"create_account_button": "Create Account",
"or_divider": "or",
"social_apple": "Sign Up with Apple",
"social_google": "Sign Up with Google",
"has_account": "Already have an account? ",
"sign_in_link": "Sign In"
}
},
"client_home": {
"dashboard": {
"welcome_back": "Welcome back",
"edit_mode_active": "Edit Mode Active",
"drag_instruction": "Drag to reorder, toggle visibility",
"reset": "Reset",
"metric_needed": "Needed",
"metric_filled": "Filled",
"metric_open": "Open",
"view_all": "View all",
"insight_lightbulb": "Save $amount/month",
"insight_tip": "Book 48hrs ahead for better rates"
},
"widgets": {
"actions": "Quick Actions",
"reorder": "Reorder",
"coverage": "Today's Coverage",
"spending": "Spending Insights",
"live_activity": "Live Activity"
},
"actions": {
"rapid": "RAPID",
"rapid_subtitle": "Urgent same-day",
"create_order": "Create Order",
"create_order_subtitle": "Schedule shifts"
},
"reorder": {
"title": "REORDER",
"reorder_button": "Reorder",
"per_hr": "$amount/hr"
},
"form": {
"edit_reorder": "Edit & Reorder",
"post_new": "Post a New Shift",
"review_subtitle": "Review and edit the details before posting",
"date_label": "Date *",
"date_hint": "mm/dd/yyyy",
"location_label": "Location *",
"location_hint": "Business address",
"positions_title": "Positions",
"add_position": "Add Position",
"role_label": "Role *",
"role_hint": "Select role",
"start_time": "Start Time *",
"end_time": "End Time *",
"workers_needed": "Workers Needed *",
"hourly_rate": "Hourly Rate (\\$) *",
"post_shift": "Post Shift"
}
}
}

View File

@@ -0,0 +1,189 @@
{
"common": {
"ok": "Aceptar",
"cancel": "Cancelar",
"save": "Guardar",
"delete": "Eliminar",
"continue_text": "Continuar"
},
"settings": {
"language": "Idioma",
"change_language": "Cambiar Idioma"
},
"staff_authentication": {
"get_started_page": {
"title_part1": "Trabaja, Crece, ",
"title_part2": "Elévate",
"subtitle": "Construye tu carrera en hostelería con \nflexibilidad y libertad.",
"sign_up_button": "Registrarse",
"log_in_button": "Iniciar sesión"
},
"phone_verification_page": {
"validation_error": "Por favor, ingresa un número de teléfono válido de 10 dígitos",
"send_code_button": "Enviar código",
"enter_code_title": "Ingresa el código de verificación",
"code_sent_message": "Enviamos un código de 6 dígitos a ",
"code_sent_instruction": ". Ingrésalo a continuación para verificar tu cuenta."
},
"phone_input": {
"title": "Verifica tu número de teléfono",
"subtitle": "Te enviaremos un código de verificación para comenzar.",
"label": "Número de teléfono",
"hint": "Ingresa tu número"
},
"otp_verification": {
"did_not_get_code": "¿No recibiste el código?",
"resend_in": "Reenviar en $seconds s",
"resend_code": "Reenviar código"
},
"profile_setup_page": {
"step_indicator": "Paso $current de $total",
"error_occurred": "Ocurrió un error",
"complete_setup_button": "Completar configuración",
"steps": {
"basic": "Información básica",
"location": "Ubicación",
"experience": "Experiencia"
},
"basic_info": {
"title": "Conozcámonos",
"subtitle": "Cuéntanos un poco sobre ti",
"full_name_label": "Nombre completo *",
"full_name_hint": "Juan Pérez",
"bio_label": "Biografía corta",
"bio_hint": "Profesional experimentado en hostelería..."
},
"location": {
"title": "¿Dónde quieres trabajar?",
"subtitle": "Agrega tus ubicaciones de trabajo preferidas",
"add_location_label": "Agregar ubicación *",
"add_location_hint": "Ciudad o código postal",
"add_button": "Agregar",
"max_distance": "Distancia máxima: $distance millas",
"min_dist_label": "5 mi",
"max_dist_label": "50 mi"
},
"experience": {
"title": "¿Cuáles son tus habilidades?",
"subtitle": "Selecciona todas las que correspondan",
"skills_label": "Habilidades *",
"industries_label": "Industrias preferidas",
"skills": {
"food_service": "Servicio de comida",
"bartending": "Preparación de bebidas",
"warehouse": "Almacén",
"retail": "Venta minorista",
"events": "Eventos",
"customer_service": "Servicio al cliente",
"cleaning": "Limpieza",
"security": "Seguridad",
"driving": "Conducción",
"cooking": "Cocina"
},
"industries": {
"hospitality": "Hostelería",
"food_service": "Servicio de comida",
"warehouse": "Almacén",
"events": "Eventos",
"retail": "Venta minorista",
"healthcare": "Atención médica"
}
}
},
"common": {
"trouble_question": "¿Tienes problemas? ",
"contact_support": "Contactar a soporte"
}
},
"client_authentication": {
"get_started_page": {
"title": "Toma el control de tus\nturnos y eventos",
"subtitle": "Optimiza tus operaciones con potentes herramientas para gestionar horarios, realizar un seguimiento del rendimiento y mantener a tu equipo en la misma página, todo en un solo lugar",
"sign_in_button": "Iniciar sesión",
"create_account_button": "Crear cuenta"
},
"sign_in_page": {
"title": "Bienvenido de nuevo",
"subtitle": "Inicia sesión para gestionar tus turnos y trabajadores",
"email_label": "Correo electrónico",
"email_hint": "Ingresa tu correo electrónico",
"password_label": "Contraseña",
"password_hint": "Ingresa tu contraseña",
"forgot_password": "¿Olvidaste tu contraseña?",
"sign_in_button": "Iniciar sesión",
"or_divider": "o",
"social_apple": "Iniciar sesión con Apple",
"social_google": "Iniciar sesión con Google",
"no_account": "¿No tienes una cuenta? ",
"sign_up_link": "Regístrate"
},
"sign_up_page": {
"title": "Crear cuenta",
"subtitle": "Comienza con Krow para tu negocio",
"company_label": "Nombre de la empresa",
"company_hint": "Ingresa el nombre de la empresa",
"email_label": "Correo electrónico",
"email_hint": "Ingresa tu correo electrónico",
"password_label": "Contraseña",
"password_hint": "Crea una contraseña",
"confirm_password_label": "Confirmar contraseña",
"confirm_password_hint": "Confirma tu contraseña",
"create_account_button": "Crear cuenta",
"or_divider": "o",
"social_apple": "Regístrate con Apple",
"social_google": "Regístrate con Google",
"has_account": "¿Ya tienes una cuenta? ",
"sign_in_link": "Iniciar sesión"
}
},
"client_home": {
"dashboard": {
"welcome_back": "Bienvenido de nuevo",
"edit_mode_active": "Modo Edición Activo",
"drag_instruction": "Arrastra para reordenar, cambia la visibilidad",
"reset": "Restablecer",
"metric_needed": "Necesario",
"metric_filled": "Lleno",
"metric_open": "Abierto",
"view_all": "Ver todo",
"insight_lightbulb": "Ahorra $amount/mes",
"insight_tip": "Reserva con 48h de antelación para mejores tarifas"
},
"widgets": {
"actions": "Acciones Rápidas",
"reorder": "Reordenar",
"coverage": "Cobertura de Hoy",
"spending": "Información de Gastos",
"live_activity": "Actividad en Vivo"
},
"actions": {
"rapid": "RÁPIDO",
"rapid_subtitle": "Urgente mismo día",
"create_order": "Crear Orden",
"create_order_subtitle": "Programar turnos"
},
"reorder": {
"title": "REORDENAR",
"reorder_button": "Reordenar",
"per_hr": "$amount/hr"
},
"form": {
"edit_reorder": "Editar y Reordenar",
"post_new": "Publicar un Nuevo Turno",
"review_subtitle": "Revisa y edita los detalles antes de publicar",
"date_label": "Fecha *",
"date_hint": "mm/dd/aaaa",
"location_label": "Ubicación *",
"location_hint": "Dirección del negocio",
"positions_title": "Posiciones",
"add_position": "Añadir Posición",
"role_label": "Rol *",
"role_hint": "Seleccionar rol",
"start_time": "Hora de Inicio *",
"end_time": "Hora de Fin *",
"workers_needed": "Trabajadores Necesarios *",
"hourly_rate": "Tarifa por hora (\\$) *",
"post_shift": "Publicar Turno"
}
}
}

View File

@@ -0,0 +1,183 @@
/// Generated file. Do not edit.
///
/// Source: lib/src/l10n
/// To regenerate, run: `dart run slang`
///
/// Locales: 2
/// Strings: 276 (138 per locale)
///
/// Built on 2026-01-21 at 18:21 UTC
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
// dart format off
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'package:slang_flutter/slang_flutter.dart';
export 'package:slang_flutter/slang_flutter.dart';
import 'strings_es.g.dart' deferred as l_es;
part 'strings_en.g.dart';
/// Supported locales.
///
/// Usage:
/// - LocaleSettings.setLocale(AppLocale.en) // set locale
/// - Locale locale = AppLocale.en.flutterLocale // get flutter locale from enum
/// - if (LocaleSettings.currentLocale == AppLocale.en) // locale check
enum AppLocale with BaseAppLocale<AppLocale, Translations> {
en(languageCode: 'en'),
es(languageCode: 'es');
const AppLocale({
required this.languageCode,
this.scriptCode, // ignore: unused_element, unused_element_parameter
this.countryCode, // ignore: unused_element, unused_element_parameter
});
@override final String languageCode;
@override final String? scriptCode;
@override final String? countryCode;
@override
Future<Translations> build({
Map<String, Node>? overrides,
PluralResolver? cardinalResolver,
PluralResolver? ordinalResolver,
}) async {
switch (this) {
case AppLocale.en:
return TranslationsEn(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.es:
await l_es.loadLibrary();
return l_es.TranslationsEs(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
}
}
@override
Translations buildSync({
Map<String, Node>? overrides,
PluralResolver? cardinalResolver,
PluralResolver? ordinalResolver,
}) {
switch (this) {
case AppLocale.en:
return TranslationsEn(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
case AppLocale.es:
return l_es.TranslationsEs(
overrides: overrides,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
}
}
/// Gets current instance managed by [LocaleSettings].
Translations get translations => LocaleSettings.instance.getTranslations(this);
}
/// Method A: Simple
///
/// No rebuild after locale change.
/// Translation happens during initialization of the widget (call of t).
/// Configurable via 'translate_var'.
///
/// Usage:
/// String a = t.someKey.anotherKey;
/// String b = t['someKey.anotherKey']; // Only for edge cases!
Translations get t => LocaleSettings.instance.currentTranslations;
/// Method B: Advanced
///
/// All widgets using this method will trigger a rebuild when locale changes.
/// Use this if you have e.g. a settings page where the user can select the locale during runtime.
///
/// Step 1:
/// wrap your App with
/// TranslationProvider(
/// child: MyApp()
/// );
///
/// Step 2:
/// final t = Translations.of(context); // Get t variable.
/// String a = t.someKey.anotherKey; // Use t variable.
/// String b = t['someKey.anotherKey']; // Only for edge cases!
class TranslationProvider extends BaseTranslationProvider<AppLocale, Translations> {
TranslationProvider({required super.child}) : super(settings: LocaleSettings.instance);
static InheritedLocaleData<AppLocale, Translations> of(BuildContext context) => InheritedLocaleData.of<AppLocale, Translations>(context);
}
/// Method B shorthand via [BuildContext] extension method.
/// Configurable via 'translate_var'.
///
/// Usage (e.g. in a widget's build method):
/// context.t.someKey.anotherKey
extension BuildContextTranslationsExtension on BuildContext {
Translations get t => TranslationProvider.of(this).translations;
}
/// Manages all translation instances and the current locale
class LocaleSettings extends BaseFlutterLocaleSettings<AppLocale, Translations> {
LocaleSettings._() : super(
utils: AppLocaleUtils.instance,
lazy: true,
);
static final instance = LocaleSettings._();
// static aliases (checkout base methods for documentation)
static AppLocale get currentLocale => instance.currentLocale;
static Stream<AppLocale> getLocaleStream() => instance.getLocaleStream();
static Future<AppLocale> setLocale(AppLocale locale, {bool? listenToDeviceLocale = false}) => instance.setLocale(locale, listenToDeviceLocale: listenToDeviceLocale);
static Future<AppLocale> setLocaleRaw(String rawLocale, {bool? listenToDeviceLocale = false}) => instance.setLocaleRaw(rawLocale, listenToDeviceLocale: listenToDeviceLocale);
static Future<AppLocale> useDeviceLocale() => instance.useDeviceLocale();
static Future<void> setPluralResolver({String? language, AppLocale? locale, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) => instance.setPluralResolver(
language: language,
locale: locale,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
// synchronous versions
static AppLocale setLocaleSync(AppLocale locale, {bool? listenToDeviceLocale = false}) => instance.setLocaleSync(locale, listenToDeviceLocale: listenToDeviceLocale);
static AppLocale setLocaleRawSync(String rawLocale, {bool? listenToDeviceLocale = false}) => instance.setLocaleRawSync(rawLocale, listenToDeviceLocale: listenToDeviceLocale);
static AppLocale useDeviceLocaleSync() => instance.useDeviceLocaleSync();
static void setPluralResolverSync({String? language, AppLocale? locale, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver}) => instance.setPluralResolverSync(
language: language,
locale: locale,
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
);
}
/// Provides utility functions without any side effects.
class AppLocaleUtils extends BaseAppLocaleUtils<AppLocale, Translations> {
AppLocaleUtils._() : super(
baseLocale: AppLocale.en,
locales: AppLocale.values,
);
static final instance = AppLocaleUtils._();
// static aliases (checkout base methods for documentation)
static AppLocale parse(String rawLocale) => instance.parse(rawLocale);
static AppLocale parseLocaleParts({required String languageCode, String? scriptCode, String? countryCode}) => instance.parseLocaleParts(languageCode: languageCode, scriptCode: scriptCode, countryCode: countryCode);
static AppLocale findDeviceLocale() => instance.findDeviceLocale();
static List<Locale> get supportedLocales => instance.supportedLocales;
static List<String> get supportedLocalesRaw => instance.supportedLocalesRaw;
}

View File

@@ -0,0 +1,861 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
// dart format off
part of 'strings.g.dart';
// Path: <root>
typedef TranslationsEn = Translations; // ignore: unused_element
class Translations with BaseTranslations<AppLocale, Translations> {
/// Returns the current translations of the given [context].
///
/// Usage:
/// final t = Translations.of(context);
static Translations of(BuildContext context) => InheritedLocaleData.of<AppLocale, Translations>(context).translations;
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
Translations({Map<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? meta})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.en,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <en>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
dynamic operator[](String key) => $meta.getTranslation(key);
late final Translations _root = this; // ignore: unused_field
Translations $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => Translations(meta: meta ?? this.$meta);
// Translations
late final TranslationsCommonEn common = TranslationsCommonEn._(_root);
late final TranslationsSettingsEn settings = TranslationsSettingsEn._(_root);
late final TranslationsStaffAuthenticationEn staff_authentication = TranslationsStaffAuthenticationEn._(_root);
late final TranslationsClientAuthenticationEn client_authentication = TranslationsClientAuthenticationEn._(_root);
late final TranslationsClientHomeEn client_home = TranslationsClientHomeEn._(_root);
}
// Path: common
class TranslationsCommonEn {
TranslationsCommonEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'OK'
String get ok => 'OK';
/// en: 'Cancel'
String get cancel => 'Cancel';
/// en: 'Save'
String get save => 'Save';
/// en: 'Delete'
String get delete => 'Delete';
/// en: 'Continue'
String get continue_text => 'Continue';
}
// Path: settings
class TranslationsSettingsEn {
TranslationsSettingsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Language'
String get language => 'Language';
/// en: 'Change Language'
String get change_language => 'Change Language';
}
// Path: staff_authentication
class TranslationsStaffAuthenticationEn {
TranslationsStaffAuthenticationEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
late final TranslationsStaffAuthenticationGetStartedPageEn get_started_page = TranslationsStaffAuthenticationGetStartedPageEn._(_root);
late final TranslationsStaffAuthenticationPhoneVerificationPageEn phone_verification_page = TranslationsStaffAuthenticationPhoneVerificationPageEn._(_root);
late final TranslationsStaffAuthenticationPhoneInputEn phone_input = TranslationsStaffAuthenticationPhoneInputEn._(_root);
late final TranslationsStaffAuthenticationOtpVerificationEn otp_verification = TranslationsStaffAuthenticationOtpVerificationEn._(_root);
late final TranslationsStaffAuthenticationProfileSetupPageEn profile_setup_page = TranslationsStaffAuthenticationProfileSetupPageEn._(_root);
late final TranslationsStaffAuthenticationCommonEn common = TranslationsStaffAuthenticationCommonEn._(_root);
}
// Path: client_authentication
class TranslationsClientAuthenticationEn {
TranslationsClientAuthenticationEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
late final TranslationsClientAuthenticationGetStartedPageEn get_started_page = TranslationsClientAuthenticationGetStartedPageEn._(_root);
late final TranslationsClientAuthenticationSignInPageEn sign_in_page = TranslationsClientAuthenticationSignInPageEn._(_root);
late final TranslationsClientAuthenticationSignUpPageEn sign_up_page = TranslationsClientAuthenticationSignUpPageEn._(_root);
}
// Path: client_home
class TranslationsClientHomeEn {
TranslationsClientHomeEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Shift order submitted successfully'
String get shift_created_success => 'Shift order submitted successfully';
late final TranslationsClientHomeDashboardEn dashboard = TranslationsClientHomeDashboardEn._(_root);
late final TranslationsClientHomeWidgetsEn widgets = TranslationsClientHomeWidgetsEn._(_root);
late final TranslationsClientHomeActionsEn actions = TranslationsClientHomeActionsEn._(_root);
late final TranslationsClientHomeReorderEn reorder = TranslationsClientHomeReorderEn._(_root);
late final TranslationsClientHomeFormEn form = TranslationsClientHomeFormEn._(_root);
}
// Path: staff_authentication.get_started_page
class TranslationsStaffAuthenticationGetStartedPageEn {
TranslationsStaffAuthenticationGetStartedPageEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Work, Grow, '
String get title_part1 => 'Work, Grow, ';
/// en: 'Elevate'
String get title_part2 => 'Elevate';
/// en: 'Build your career in hospitality with flexibility and freedom.'
String get subtitle => 'Build your career in hospitality with \nflexibility and freedom.';
/// en: 'Sign Up'
String get sign_up_button => 'Sign Up';
/// en: 'Log In'
String get log_in_button => 'Log In';
}
// Path: staff_authentication.phone_verification_page
class TranslationsStaffAuthenticationPhoneVerificationPageEn {
TranslationsStaffAuthenticationPhoneVerificationPageEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Please enter a valid 10-digit phone number'
String get validation_error => 'Please enter a valid 10-digit phone number';
/// en: 'Send Code'
String get send_code_button => 'Send Code';
/// en: 'Enter verification code'
String get enter_code_title => 'Enter verification code';
/// en: 'We sent a 6-digit code to '
String get code_sent_message => 'We sent a 6-digit code to ';
/// en: '. Enter it below to verify your account.'
String get code_sent_instruction => '. Enter it below to verify your account.';
}
// Path: staff_authentication.phone_input
class TranslationsStaffAuthenticationPhoneInputEn {
TranslationsStaffAuthenticationPhoneInputEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Verify your phone number'
String get title => 'Verify your phone number';
/// en: 'We'll send you a verification code to get started.'
String get subtitle => 'We\'ll send you a verification code to get started.';
/// en: 'Phone Number'
String get label => 'Phone Number';
/// en: 'Enter your number'
String get hint => 'Enter your number';
}
// Path: staff_authentication.otp_verification
class TranslationsStaffAuthenticationOtpVerificationEn {
TranslationsStaffAuthenticationOtpVerificationEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Didn't get the code ?'
String get did_not_get_code => 'Didn\'t get the code ?';
/// en: 'Resend in $seconds s'
String resend_in({required Object seconds}) => 'Resend in ${seconds} s';
/// en: 'Resend code'
String get resend_code => 'Resend code';
}
// Path: staff_authentication.profile_setup_page
class TranslationsStaffAuthenticationProfileSetupPageEn {
TranslationsStaffAuthenticationProfileSetupPageEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Step $current of $total'
String step_indicator({required Object current, required Object total}) => 'Step ${current} of ${total}';
/// en: 'An error occurred'
String get error_occurred => 'An error occurred';
/// en: 'Complete Setup'
String get complete_setup_button => 'Complete Setup';
late final TranslationsStaffAuthenticationProfileSetupPageStepsEn steps = TranslationsStaffAuthenticationProfileSetupPageStepsEn._(_root);
late final TranslationsStaffAuthenticationProfileSetupPageBasicInfoEn basic_info = TranslationsStaffAuthenticationProfileSetupPageBasicInfoEn._(_root);
late final TranslationsStaffAuthenticationProfileSetupPageLocationEn location = TranslationsStaffAuthenticationProfileSetupPageLocationEn._(_root);
late final TranslationsStaffAuthenticationProfileSetupPageExperienceEn experience = TranslationsStaffAuthenticationProfileSetupPageExperienceEn._(_root);
}
// Path: staff_authentication.common
class TranslationsStaffAuthenticationCommonEn {
TranslationsStaffAuthenticationCommonEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Having trouble? '
String get trouble_question => 'Having trouble? ';
/// en: 'Contact Support'
String get contact_support => 'Contact Support';
}
// Path: client_authentication.get_started_page
class TranslationsClientAuthenticationGetStartedPageEn {
TranslationsClientAuthenticationGetStartedPageEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Take Control of Your Shifts and Events'
String get title => 'Take Control of Your\nShifts and Events';
/// en: 'Streamline your operations with powerful tools to manage schedules, track performance, and keep your team on the same page—all in one place'
String get subtitle => 'Streamline your operations with powerful tools to manage schedules, track performance, and keep your team on the same page—all in one place';
/// en: 'Sign In'
String get sign_in_button => 'Sign In';
/// en: 'Create Account'
String get create_account_button => 'Create Account';
}
// Path: client_authentication.sign_in_page
class TranslationsClientAuthenticationSignInPageEn {
TranslationsClientAuthenticationSignInPageEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Welcome Back'
String get title => 'Welcome Back';
/// en: 'Sign in to manage your shifts and workers'
String get subtitle => 'Sign in to manage your shifts and workers';
/// en: 'Email'
String get email_label => 'Email';
/// en: 'Enter your email'
String get email_hint => 'Enter your email';
/// en: 'Password'
String get password_label => 'Password';
/// en: 'Enter your password'
String get password_hint => 'Enter your password';
/// en: 'Forgot Password?'
String get forgot_password => 'Forgot Password?';
/// en: 'Sign In'
String get sign_in_button => 'Sign In';
/// en: 'or'
String get or_divider => 'or';
/// en: 'Sign In with Apple'
String get social_apple => 'Sign In with Apple';
/// en: 'Sign In with Google'
String get social_google => 'Sign In with Google';
/// en: 'Don't have an account? '
String get no_account => 'Don\'t have an account? ';
/// en: 'Sign Up'
String get sign_up_link => 'Sign Up';
}
// Path: client_authentication.sign_up_page
class TranslationsClientAuthenticationSignUpPageEn {
TranslationsClientAuthenticationSignUpPageEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Create Account'
String get title => 'Create Account';
/// en: 'Get started with Krow for your business'
String get subtitle => 'Get started with Krow for your business';
/// en: 'Company Name'
String get company_label => 'Company Name';
/// en: 'Enter company name'
String get company_hint => 'Enter company name';
/// en: 'Email'
String get email_label => 'Email';
/// en: 'Enter your email'
String get email_hint => 'Enter your email';
/// en: 'Password'
String get password_label => 'Password';
/// en: 'Create a password'
String get password_hint => 'Create a password';
/// en: 'Confirm Password'
String get confirm_password_label => 'Confirm Password';
/// en: 'Confirm your password'
String get confirm_password_hint => 'Confirm your password';
/// en: 'Create Account'
String get create_account_button => 'Create Account';
/// en: 'or'
String get or_divider => 'or';
/// en: 'Sign Up with Apple'
String get social_apple => 'Sign Up with Apple';
/// en: 'Sign Up with Google'
String get social_google => 'Sign Up with Google';
/// en: 'Already have an account? '
String get has_account => 'Already have an account? ';
/// en: 'Sign In'
String get sign_in_link => 'Sign In';
}
// Path: client_home.dashboard
class TranslationsClientHomeDashboardEn {
TranslationsClientHomeDashboardEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Welcome back'
String get welcome_back => 'Welcome back';
/// en: 'Edit Mode Active'
String get edit_mode_active => 'Edit Mode Active';
/// en: 'Drag to reorder, toggle visibility'
String get drag_instruction => 'Drag to reorder, toggle visibility';
/// en: 'Reset'
String get reset => 'Reset';
/// en: 'Needed'
String get metric_needed => 'Needed';
/// en: 'Filled'
String get metric_filled => 'Filled';
/// en: 'Open'
String get metric_open => 'Open';
/// en: 'View all'
String get view_all => 'View all';
/// en: 'Save $amount/month'
String insight_lightbulb({required Object amount}) => 'Save ${amount}/month';
/// en: 'Book 48hrs ahead for better rates'
String get insight_tip => 'Book 48hrs ahead for better rates';
}
// Path: client_home.widgets
class TranslationsClientHomeWidgetsEn {
TranslationsClientHomeWidgetsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Quick Actions'
String get actions => 'Quick Actions';
/// en: 'Reorder'
String get reorder => 'Reorder';
/// en: 'Today's Coverage'
String get coverage => 'Today\'s Coverage';
/// en: 'Spending Insights'
String get spending => 'Spending Insights';
/// en: 'Live Activity'
String get live_activity => 'Live Activity';
}
// Path: client_home.actions
class TranslationsClientHomeActionsEn {
TranslationsClientHomeActionsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'RAPID'
String get rapid => 'RAPID';
/// en: 'Urgent same-day'
String get rapid_subtitle => 'Urgent same-day';
/// en: 'Create Order'
String get create_order => 'Create Order';
/// en: 'Schedule shifts'
String get create_order_subtitle => 'Schedule shifts';
}
// Path: client_home.reorder
class TranslationsClientHomeReorderEn {
TranslationsClientHomeReorderEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'REORDER'
String get title => 'REORDER';
/// en: 'Reorder'
String get reorder_button => 'Reorder';
/// en: '$amount/hr'
String per_hr({required Object amount}) => '${amount}/hr';
}
// Path: client_home.form
class TranslationsClientHomeFormEn {
TranslationsClientHomeFormEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Edit & Reorder'
String get edit_reorder => 'Edit & Reorder';
/// en: 'Post a New Shift'
String get post_new => 'Post a New Shift';
/// en: 'Review and edit the details before posting'
String get review_subtitle => 'Review and edit the details before posting';
/// en: 'Date *'
String get date_label => 'Date *';
/// en: 'mm/dd/yyyy'
String get date_hint => 'mm/dd/yyyy';
/// en: 'Location *'
String get location_label => 'Location *';
/// en: 'Business address'
String get location_hint => 'Business address';
/// en: 'Positions'
String get positions_title => 'Positions';
/// en: 'Add Position'
String get add_position => 'Add Position';
/// en: 'Role *'
String get role_label => 'Role *';
/// en: 'Select role'
String get role_hint => 'Select role';
/// en: 'Start Time *'
String get start_time => 'Start Time *';
/// en: 'End Time *'
String get end_time => 'End Time *';
/// en: 'Workers Needed *'
String get workers_needed => 'Workers Needed *';
/// en: 'Hourly Rate (\$) *'
String get hourly_rate => 'Hourly Rate (\$) *';
/// en: 'Post Shift'
String get post_shift => 'Post Shift';
}
// Path: staff_authentication.profile_setup_page.steps
class TranslationsStaffAuthenticationProfileSetupPageStepsEn {
TranslationsStaffAuthenticationProfileSetupPageStepsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Basic Info'
String get basic => 'Basic Info';
/// en: 'Location'
String get location => 'Location';
/// en: 'Experience'
String get experience => 'Experience';
}
// Path: staff_authentication.profile_setup_page.basic_info
class TranslationsStaffAuthenticationProfileSetupPageBasicInfoEn {
TranslationsStaffAuthenticationProfileSetupPageBasicInfoEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Let's get to know you'
String get title => 'Let\'s get to know you';
/// en: 'Tell us a bit about yourself'
String get subtitle => 'Tell us a bit about yourself';
/// en: 'Full Name *'
String get full_name_label => 'Full Name *';
/// en: 'John Smith'
String get full_name_hint => 'John Smith';
/// en: 'Short Bio'
String get bio_label => 'Short Bio';
/// en: 'Experienced hospitality professional...'
String get bio_hint => 'Experienced hospitality professional...';
}
// Path: staff_authentication.profile_setup_page.location
class TranslationsStaffAuthenticationProfileSetupPageLocationEn {
TranslationsStaffAuthenticationProfileSetupPageLocationEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Where do you want to work?'
String get title => 'Where do you want to work?';
/// en: 'Add your preferred work locations'
String get subtitle => 'Add your preferred work locations';
/// en: 'Add Location *'
String get add_location_label => 'Add Location *';
/// en: 'City or ZIP code'
String get add_location_hint => 'City or ZIP code';
/// en: 'Add'
String get add_button => 'Add';
/// en: 'Max Distance: $distance miles'
String max_distance({required Object distance}) => 'Max Distance: ${distance} miles';
/// en: '5 mi'
String get min_dist_label => '5 mi';
/// en: '50 mi'
String get max_dist_label => '50 mi';
}
// Path: staff_authentication.profile_setup_page.experience
class TranslationsStaffAuthenticationProfileSetupPageExperienceEn {
TranslationsStaffAuthenticationProfileSetupPageExperienceEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'What are your skills?'
String get title => 'What are your skills?';
/// en: 'Select all that apply'
String get subtitle => 'Select all that apply';
/// en: 'Skills *'
String get skills_label => 'Skills *';
/// en: 'Preferred Industries'
String get industries_label => 'Preferred Industries';
late final TranslationsStaffAuthenticationProfileSetupPageExperienceSkillsEn skills = TranslationsStaffAuthenticationProfileSetupPageExperienceSkillsEn._(_root);
late final TranslationsStaffAuthenticationProfileSetupPageExperienceIndustriesEn industries = TranslationsStaffAuthenticationProfileSetupPageExperienceIndustriesEn._(_root);
}
// Path: staff_authentication.profile_setup_page.experience.skills
class TranslationsStaffAuthenticationProfileSetupPageExperienceSkillsEn {
TranslationsStaffAuthenticationProfileSetupPageExperienceSkillsEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Food Service'
String get food_service => 'Food Service';
/// en: 'Bartending'
String get bartending => 'Bartending';
/// en: 'Warehouse'
String get warehouse => 'Warehouse';
/// en: 'Retail'
String get retail => 'Retail';
/// en: 'Events'
String get events => 'Events';
/// en: 'Customer Service'
String get customer_service => 'Customer Service';
/// en: 'Cleaning'
String get cleaning => 'Cleaning';
/// en: 'Security'
String get security => 'Security';
/// en: 'Driving'
String get driving => 'Driving';
/// en: 'Cooking'
String get cooking => 'Cooking';
}
// Path: staff_authentication.profile_setup_page.experience.industries
class TranslationsStaffAuthenticationProfileSetupPageExperienceIndustriesEn {
TranslationsStaffAuthenticationProfileSetupPageExperienceIndustriesEn._(this._root);
final Translations _root; // ignore: unused_field
// Translations
/// en: 'Hospitality'
String get hospitality => 'Hospitality';
/// en: 'Food Service'
String get food_service => 'Food Service';
/// en: 'Warehouse'
String get warehouse => 'Warehouse';
/// en: 'Events'
String get events => 'Events';
/// en: 'Retail'
String get retail => 'Retail';
/// en: 'Healthcare'
String get healthcare => 'Healthcare';
}
/// The flat map containing all translations for locale <en>.
/// Only for edge cases! For simple maps, use the map function of this library.
///
/// The Dart AOT compiler has issues with very large switch statements,
/// so the map is split into smaller functions (512 entries each).
extension on Translations {
dynamic _flatMapFunction(String path) {
return switch (path) {
'common.ok' => 'OK',
'common.cancel' => 'Cancel',
'common.save' => 'Save',
'common.delete' => 'Delete',
'common.continue_text' => 'Continue',
'settings.language' => 'Language',
'settings.change_language' => 'Change Language',
'staff_authentication.get_started_page.title_part1' => 'Work, Grow, ',
'staff_authentication.get_started_page.title_part2' => 'Elevate',
'staff_authentication.get_started_page.subtitle' => 'Build your career in hospitality with \nflexibility and freedom.',
'staff_authentication.get_started_page.sign_up_button' => 'Sign Up',
'staff_authentication.get_started_page.log_in_button' => 'Log In',
'staff_authentication.phone_verification_page.validation_error' => 'Please enter a valid 10-digit phone number',
'staff_authentication.phone_verification_page.send_code_button' => 'Send Code',
'staff_authentication.phone_verification_page.enter_code_title' => 'Enter verification code',
'staff_authentication.phone_verification_page.code_sent_message' => 'We sent a 6-digit code to ',
'staff_authentication.phone_verification_page.code_sent_instruction' => '. Enter it below to verify your account.',
'staff_authentication.phone_input.title' => 'Verify your phone number',
'staff_authentication.phone_input.subtitle' => 'We\'ll send you a verification code to get started.',
'staff_authentication.phone_input.label' => 'Phone Number',
'staff_authentication.phone_input.hint' => 'Enter your number',
'staff_authentication.otp_verification.did_not_get_code' => 'Didn\'t get the code ?',
'staff_authentication.otp_verification.resend_in' => ({required Object seconds}) => 'Resend in ${seconds} s',
'staff_authentication.otp_verification.resend_code' => 'Resend code',
'staff_authentication.profile_setup_page.step_indicator' => ({required Object current, required Object total}) => 'Step ${current} of ${total}',
'staff_authentication.profile_setup_page.error_occurred' => 'An error occurred',
'staff_authentication.profile_setup_page.complete_setup_button' => 'Complete Setup',
'staff_authentication.profile_setup_page.steps.basic' => 'Basic Info',
'staff_authentication.profile_setup_page.steps.location' => 'Location',
'staff_authentication.profile_setup_page.steps.experience' => 'Experience',
'staff_authentication.profile_setup_page.basic_info.title' => 'Let\'s get to know you',
'staff_authentication.profile_setup_page.basic_info.subtitle' => 'Tell us a bit about yourself',
'staff_authentication.profile_setup_page.basic_info.full_name_label' => 'Full Name *',
'staff_authentication.profile_setup_page.basic_info.full_name_hint' => 'John Smith',
'staff_authentication.profile_setup_page.basic_info.bio_label' => 'Short Bio',
'staff_authentication.profile_setup_page.basic_info.bio_hint' => 'Experienced hospitality professional...',
'staff_authentication.profile_setup_page.location.title' => 'Where do you want to work?',
'staff_authentication.profile_setup_page.location.subtitle' => 'Add your preferred work locations',
'staff_authentication.profile_setup_page.location.add_location_label' => 'Add Location *',
'staff_authentication.profile_setup_page.location.add_location_hint' => 'City or ZIP code',
'staff_authentication.profile_setup_page.location.add_button' => 'Add',
'staff_authentication.profile_setup_page.location.max_distance' => ({required Object distance}) => 'Max Distance: ${distance} miles',
'staff_authentication.profile_setup_page.location.min_dist_label' => '5 mi',
'staff_authentication.profile_setup_page.location.max_dist_label' => '50 mi',
'staff_authentication.profile_setup_page.experience.title' => 'What are your skills?',
'staff_authentication.profile_setup_page.experience.subtitle' => 'Select all that apply',
'staff_authentication.profile_setup_page.experience.skills_label' => 'Skills *',
'staff_authentication.profile_setup_page.experience.industries_label' => 'Preferred Industries',
'staff_authentication.profile_setup_page.experience.skills.food_service' => 'Food Service',
'staff_authentication.profile_setup_page.experience.skills.bartending' => 'Bartending',
'staff_authentication.profile_setup_page.experience.skills.warehouse' => 'Warehouse',
'staff_authentication.profile_setup_page.experience.skills.retail' => 'Retail',
'staff_authentication.profile_setup_page.experience.skills.events' => 'Events',
'staff_authentication.profile_setup_page.experience.skills.customer_service' => 'Customer Service',
'staff_authentication.profile_setup_page.experience.skills.cleaning' => 'Cleaning',
'staff_authentication.profile_setup_page.experience.skills.security' => 'Security',
'staff_authentication.profile_setup_page.experience.skills.driving' => 'Driving',
'staff_authentication.profile_setup_page.experience.skills.cooking' => 'Cooking',
'staff_authentication.profile_setup_page.experience.industries.hospitality' => 'Hospitality',
'staff_authentication.profile_setup_page.experience.industries.food_service' => 'Food Service',
'staff_authentication.profile_setup_page.experience.industries.warehouse' => 'Warehouse',
'staff_authentication.profile_setup_page.experience.industries.events' => 'Events',
'staff_authentication.profile_setup_page.experience.industries.retail' => 'Retail',
'staff_authentication.profile_setup_page.experience.industries.healthcare' => 'Healthcare',
'staff_authentication.common.trouble_question' => 'Having trouble? ',
'staff_authentication.common.contact_support' => 'Contact Support',
'client_authentication.get_started_page.title' => 'Take Control of Your\nShifts and Events',
'client_authentication.get_started_page.subtitle' => 'Streamline your operations with powerful tools to manage schedules, track performance, and keep your team on the same page—all in one place',
'client_authentication.get_started_page.sign_in_button' => 'Sign In',
'client_authentication.get_started_page.create_account_button' => 'Create Account',
'client_authentication.sign_in_page.title' => 'Welcome Back',
'client_authentication.sign_in_page.subtitle' => 'Sign in to manage your shifts and workers',
'client_authentication.sign_in_page.email_label' => 'Email',
'client_authentication.sign_in_page.email_hint' => 'Enter your email',
'client_authentication.sign_in_page.password_label' => 'Password',
'client_authentication.sign_in_page.password_hint' => 'Enter your password',
'client_authentication.sign_in_page.forgot_password' => 'Forgot Password?',
'client_authentication.sign_in_page.sign_in_button' => 'Sign In',
'client_authentication.sign_in_page.or_divider' => 'or',
'client_authentication.sign_in_page.social_apple' => 'Sign In with Apple',
'client_authentication.sign_in_page.social_google' => 'Sign In with Google',
'client_authentication.sign_in_page.no_account' => 'Don\'t have an account? ',
'client_authentication.sign_in_page.sign_up_link' => 'Sign Up',
'client_authentication.sign_up_page.title' => 'Create Account',
'client_authentication.sign_up_page.subtitle' => 'Get started with Krow for your business',
'client_authentication.sign_up_page.company_label' => 'Company Name',
'client_authentication.sign_up_page.company_hint' => 'Enter company name',
'client_authentication.sign_up_page.email_label' => 'Email',
'client_authentication.sign_up_page.email_hint' => 'Enter your email',
'client_authentication.sign_up_page.password_label' => 'Password',
'client_authentication.sign_up_page.password_hint' => 'Create a password',
'client_authentication.sign_up_page.confirm_password_label' => 'Confirm Password',
'client_authentication.sign_up_page.confirm_password_hint' => 'Confirm your password',
'client_authentication.sign_up_page.create_account_button' => 'Create Account',
'client_authentication.sign_up_page.or_divider' => 'or',
'client_authentication.sign_up_page.social_apple' => 'Sign Up with Apple',
'client_authentication.sign_up_page.social_google' => 'Sign Up with Google',
'client_authentication.sign_up_page.has_account' => 'Already have an account? ',
'client_authentication.sign_up_page.sign_in_link' => 'Sign In',
'client_home.shift_created_success' => 'Shift order submitted successfully',
'client_home.dashboard.welcome_back' => 'Welcome back',
'client_home.dashboard.edit_mode_active' => 'Edit Mode Active',
'client_home.dashboard.drag_instruction' => 'Drag to reorder, toggle visibility',
'client_home.dashboard.reset' => 'Reset',
'client_home.dashboard.metric_needed' => 'Needed',
'client_home.dashboard.metric_filled' => 'Filled',
'client_home.dashboard.metric_open' => 'Open',
'client_home.dashboard.view_all' => 'View all',
'client_home.dashboard.insight_lightbulb' => ({required Object amount}) => 'Save ${amount}/month',
'client_home.dashboard.insight_tip' => 'Book 48hrs ahead for better rates',
'client_home.widgets.actions' => 'Quick Actions',
'client_home.widgets.reorder' => 'Reorder',
'client_home.widgets.coverage' => 'Today\'s Coverage',
'client_home.widgets.spending' => 'Spending Insights',
'client_home.widgets.live_activity' => 'Live Activity',
'client_home.actions.rapid' => 'RAPID',
'client_home.actions.rapid_subtitle' => 'Urgent same-day',
'client_home.actions.create_order' => 'Create Order',
'client_home.actions.create_order_subtitle' => 'Schedule shifts',
'client_home.reorder.title' => 'REORDER',
'client_home.reorder.reorder_button' => 'Reorder',
'client_home.reorder.per_hr' => ({required Object amount}) => '${amount}/hr',
'client_home.form.edit_reorder' => 'Edit & Reorder',
'client_home.form.post_new' => 'Post a New Shift',
'client_home.form.review_subtitle' => 'Review and edit the details before posting',
'client_home.form.date_label' => 'Date *',
'client_home.form.date_hint' => 'mm/dd/yyyy',
'client_home.form.location_label' => 'Location *',
'client_home.form.location_hint' => 'Business address',
'client_home.form.positions_title' => 'Positions',
'client_home.form.add_position' => 'Add Position',
'client_home.form.role_label' => 'Role *',
'client_home.form.role_hint' => 'Select role',
'client_home.form.start_time' => 'Start Time *',
'client_home.form.end_time' => 'End Time *',
'client_home.form.workers_needed' => 'Workers Needed *',
'client_home.form.hourly_rate' => 'Hourly Rate (\$) *',
'client_home.form.post_shift' => 'Post Shift',
_ => null,
};
}
}

View File

@@ -0,0 +1,579 @@
///
/// Generated file. Do not edit.
///
// coverage:ignore-file
// ignore_for_file: type=lint, unused_import
// dart format off
import 'package:flutter/widgets.dart';
import 'package:intl/intl.dart';
import 'package:slang/generated.dart';
import 'strings.g.dart';
// Path: <root>
class TranslationsEs with BaseTranslations<AppLocale, Translations> implements Translations {
/// You can call this constructor and build your own translation instance of this locale.
/// Constructing via the enum [AppLocale.build] is preferred.
TranslationsEs({Map<String, Node>? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata<AppLocale, Translations>? meta})
: assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'),
$meta = meta ?? TranslationMetadata(
locale: AppLocale.es,
overrides: overrides ?? {},
cardinalResolver: cardinalResolver,
ordinalResolver: ordinalResolver,
) {
$meta.setFlatMapFunction(_flatMapFunction);
}
/// Metadata for the translations of <es>.
@override final TranslationMetadata<AppLocale, Translations> $meta;
/// Access flat map
@override dynamic operator[](String key) => $meta.getTranslation(key);
late final TranslationsEs _root = this; // ignore: unused_field
@override
TranslationsEs $copyWith({TranslationMetadata<AppLocale, Translations>? meta}) => TranslationsEs(meta: meta ?? this.$meta);
// Translations
@override late final _TranslationsCommonEs common = _TranslationsCommonEs._(_root);
@override late final _TranslationsSettingsEs settings = _TranslationsSettingsEs._(_root);
@override late final _TranslationsStaffAuthenticationEs staff_authentication = _TranslationsStaffAuthenticationEs._(_root);
@override late final _TranslationsClientAuthenticationEs client_authentication = _TranslationsClientAuthenticationEs._(_root);
@override late final _TranslationsClientHomeEs client_home = _TranslationsClientHomeEs._(_root);
}
// Path: common
class _TranslationsCommonEs implements TranslationsCommonEn {
_TranslationsCommonEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get ok => 'Aceptar';
@override String get cancel => 'Cancelar';
@override String get save => 'Guardar';
@override String get delete => 'Eliminar';
@override String get continue_text => 'Continuar';
}
// Path: settings
class _TranslationsSettingsEs implements TranslationsSettingsEn {
_TranslationsSettingsEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get language => 'Idioma';
@override String get change_language => 'Cambiar Idioma';
}
// Path: staff_authentication
class _TranslationsStaffAuthenticationEs implements TranslationsStaffAuthenticationEn {
_TranslationsStaffAuthenticationEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override late final _TranslationsStaffAuthenticationGetStartedPageEs get_started_page = _TranslationsStaffAuthenticationGetStartedPageEs._(_root);
@override late final _TranslationsStaffAuthenticationPhoneVerificationPageEs phone_verification_page = _TranslationsStaffAuthenticationPhoneVerificationPageEs._(_root);
@override late final _TranslationsStaffAuthenticationPhoneInputEs phone_input = _TranslationsStaffAuthenticationPhoneInputEs._(_root);
@override late final _TranslationsStaffAuthenticationOtpVerificationEs otp_verification = _TranslationsStaffAuthenticationOtpVerificationEs._(_root);
@override late final _TranslationsStaffAuthenticationProfileSetupPageEs profile_setup_page = _TranslationsStaffAuthenticationProfileSetupPageEs._(_root);
@override late final _TranslationsStaffAuthenticationCommonEs common = _TranslationsStaffAuthenticationCommonEs._(_root);
}
// Path: client_authentication
class _TranslationsClientAuthenticationEs implements TranslationsClientAuthenticationEn {
_TranslationsClientAuthenticationEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override late final _TranslationsClientAuthenticationGetStartedPageEs get_started_page = _TranslationsClientAuthenticationGetStartedPageEs._(_root);
@override late final _TranslationsClientAuthenticationSignInPageEs sign_in_page = _TranslationsClientAuthenticationSignInPageEs._(_root);
@override late final _TranslationsClientAuthenticationSignUpPageEs sign_up_page = _TranslationsClientAuthenticationSignUpPageEs._(_root);
}
// Path: client_home
class _TranslationsClientHomeEs implements TranslationsClientHomeEn {
_TranslationsClientHomeEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get shift_created_success => 'Orden de turno enviada con éxito';
@override late final _TranslationsClientHomeDashboardEs dashboard = _TranslationsClientHomeDashboardEs._(_root);
@override late final _TranslationsClientHomeWidgetsEs widgets = _TranslationsClientHomeWidgetsEs._(_root);
@override late final _TranslationsClientHomeActionsEs actions = _TranslationsClientHomeActionsEs._(_root);
@override late final _TranslationsClientHomeReorderEs reorder = _TranslationsClientHomeReorderEs._(_root);
@override late final _TranslationsClientHomeFormEs form = _TranslationsClientHomeFormEs._(_root);
}
// Path: staff_authentication.get_started_page
class _TranslationsStaffAuthenticationGetStartedPageEs implements TranslationsStaffAuthenticationGetStartedPageEn {
_TranslationsStaffAuthenticationGetStartedPageEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title_part1 => 'Trabaja, Crece, ';
@override String get title_part2 => 'Elévate';
@override String get subtitle => 'Construye tu carrera en hostelería con \nflexibilidad y libertad.';
@override String get sign_up_button => 'Registrarse';
@override String get log_in_button => 'Iniciar sesión';
}
// Path: staff_authentication.phone_verification_page
class _TranslationsStaffAuthenticationPhoneVerificationPageEs implements TranslationsStaffAuthenticationPhoneVerificationPageEn {
_TranslationsStaffAuthenticationPhoneVerificationPageEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get validation_error => 'Por favor, ingresa un número de teléfono válido de 10 dígitos';
@override String get send_code_button => 'Enviar código';
@override String get enter_code_title => 'Ingresa el código de verificación';
@override String get code_sent_message => 'Enviamos un código de 6 dígitos a ';
@override String get code_sent_instruction => '. Ingrésalo a continuación para verificar tu cuenta.';
}
// Path: staff_authentication.phone_input
class _TranslationsStaffAuthenticationPhoneInputEs implements TranslationsStaffAuthenticationPhoneInputEn {
_TranslationsStaffAuthenticationPhoneInputEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Verifica tu número de teléfono';
@override String get subtitle => 'Te enviaremos un código de verificación para comenzar.';
@override String get label => 'Número de teléfono';
@override String get hint => 'Ingresa tu número';
}
// Path: staff_authentication.otp_verification
class _TranslationsStaffAuthenticationOtpVerificationEs implements TranslationsStaffAuthenticationOtpVerificationEn {
_TranslationsStaffAuthenticationOtpVerificationEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get did_not_get_code => '¿No recibiste el código?';
@override String resend_in({required Object seconds}) => 'Reenviar en ${seconds} s';
@override String get resend_code => 'Reenviar código';
}
// Path: staff_authentication.profile_setup_page
class _TranslationsStaffAuthenticationProfileSetupPageEs implements TranslationsStaffAuthenticationProfileSetupPageEn {
_TranslationsStaffAuthenticationProfileSetupPageEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String step_indicator({required Object current, required Object total}) => 'Paso ${current} de ${total}';
@override String get error_occurred => 'Ocurrió un error';
@override String get complete_setup_button => 'Completar configuración';
@override late final _TranslationsStaffAuthenticationProfileSetupPageStepsEs steps = _TranslationsStaffAuthenticationProfileSetupPageStepsEs._(_root);
@override late final _TranslationsStaffAuthenticationProfileSetupPageBasicInfoEs basic_info = _TranslationsStaffAuthenticationProfileSetupPageBasicInfoEs._(_root);
@override late final _TranslationsStaffAuthenticationProfileSetupPageLocationEs location = _TranslationsStaffAuthenticationProfileSetupPageLocationEs._(_root);
@override late final _TranslationsStaffAuthenticationProfileSetupPageExperienceEs experience = _TranslationsStaffAuthenticationProfileSetupPageExperienceEs._(_root);
}
// Path: staff_authentication.common
class _TranslationsStaffAuthenticationCommonEs implements TranslationsStaffAuthenticationCommonEn {
_TranslationsStaffAuthenticationCommonEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get trouble_question => '¿Tienes problemas? ';
@override String get contact_support => 'Contactar a soporte';
}
// Path: client_authentication.get_started_page
class _TranslationsClientAuthenticationGetStartedPageEs implements TranslationsClientAuthenticationGetStartedPageEn {
_TranslationsClientAuthenticationGetStartedPageEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Toma el control de tus\nturnos y eventos';
@override String get subtitle => 'Optimiza tus operaciones con potentes herramientas para gestionar horarios, realizar un seguimiento del rendimiento y mantener a tu equipo en la misma página, todo en un solo lugar';
@override String get sign_in_button => 'Iniciar sesión';
@override String get create_account_button => 'Crear cuenta';
}
// Path: client_authentication.sign_in_page
class _TranslationsClientAuthenticationSignInPageEs implements TranslationsClientAuthenticationSignInPageEn {
_TranslationsClientAuthenticationSignInPageEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Bienvenido de nuevo';
@override String get subtitle => 'Inicia sesión para gestionar tus turnos y trabajadores';
@override String get email_label => 'Correo electrónico';
@override String get email_hint => 'Ingresa tu correo electrónico';
@override String get password_label => 'Contraseña';
@override String get password_hint => 'Ingresa tu contraseña';
@override String get forgot_password => '¿Olvidaste tu contraseña?';
@override String get sign_in_button => 'Iniciar sesión';
@override String get or_divider => 'o';
@override String get social_apple => 'Iniciar sesión con Apple';
@override String get social_google => 'Iniciar sesión con Google';
@override String get no_account => '¿No tienes una cuenta? ';
@override String get sign_up_link => 'Regístrate';
}
// Path: client_authentication.sign_up_page
class _TranslationsClientAuthenticationSignUpPageEs implements TranslationsClientAuthenticationSignUpPageEn {
_TranslationsClientAuthenticationSignUpPageEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Crear cuenta';
@override String get subtitle => 'Comienza con Krow para tu negocio';
@override String get company_label => 'Nombre de la empresa';
@override String get company_hint => 'Ingresa el nombre de la empresa';
@override String get email_label => 'Correo electrónico';
@override String get email_hint => 'Ingresa tu correo electrónico';
@override String get password_label => 'Contraseña';
@override String get password_hint => 'Crea una contraseña';
@override String get confirm_password_label => 'Confirmar contraseña';
@override String get confirm_password_hint => 'Confirma tu contraseña';
@override String get create_account_button => 'Crear cuenta';
@override String get or_divider => 'o';
@override String get social_apple => 'Regístrate con Apple';
@override String get social_google => 'Regístrate con Google';
@override String get has_account => '¿Ya tienes una cuenta? ';
@override String get sign_in_link => 'Iniciar sesión';
}
// Path: client_home.dashboard
class _TranslationsClientHomeDashboardEs implements TranslationsClientHomeDashboardEn {
_TranslationsClientHomeDashboardEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get welcome_back => 'Bienvenido de nuevo';
@override String get edit_mode_active => 'Modo Edición Activo';
@override String get drag_instruction => 'Arrastra para reordenar, cambia la visibilidad';
@override String get reset => 'Restablecer';
@override String get metric_needed => 'Necesario';
@override String get metric_filled => 'Lleno';
@override String get metric_open => 'Abierto';
@override String get view_all => 'Ver todo';
@override String insight_lightbulb({required Object amount}) => 'Ahorra ${amount}/mes';
@override String get insight_tip => 'Reserva con 48h de antelación para mejores tarifas';
}
// Path: client_home.widgets
class _TranslationsClientHomeWidgetsEs implements TranslationsClientHomeWidgetsEn {
_TranslationsClientHomeWidgetsEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get actions => 'Acciones Rápidas';
@override String get reorder => 'Reordenar';
@override String get coverage => 'Cobertura de Hoy';
@override String get spending => 'Información de Gastos';
@override String get live_activity => 'Actividad en Vivo';
}
// Path: client_home.actions
class _TranslationsClientHomeActionsEs implements TranslationsClientHomeActionsEn {
_TranslationsClientHomeActionsEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get rapid => 'RÁPIDO';
@override String get rapid_subtitle => 'Urgente mismo día';
@override String get create_order => 'Crear Orden';
@override String get create_order_subtitle => 'Programar turnos';
}
// Path: client_home.reorder
class _TranslationsClientHomeReorderEs implements TranslationsClientHomeReorderEn {
_TranslationsClientHomeReorderEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'REORDENAR';
@override String get reorder_button => 'Reordenar';
@override String per_hr({required Object amount}) => '${amount}/hr';
}
// Path: client_home.form
class _TranslationsClientHomeFormEs implements TranslationsClientHomeFormEn {
_TranslationsClientHomeFormEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get edit_reorder => 'Editar y Reordenar';
@override String get post_new => 'Publicar un Nuevo Turno';
@override String get review_subtitle => 'Revisa y edita los detalles antes de publicar';
@override String get date_label => 'Fecha *';
@override String get date_hint => 'mm/dd/aaaa';
@override String get location_label => 'Ubicación *';
@override String get location_hint => 'Dirección del negocio';
@override String get positions_title => 'Posiciones';
@override String get add_position => 'Añadir Posición';
@override String get role_label => 'Rol *';
@override String get role_hint => 'Seleccionar rol';
@override String get start_time => 'Hora de Inicio *';
@override String get end_time => 'Hora de Fin *';
@override String get workers_needed => 'Trabajadores Necesarios *';
@override String get hourly_rate => 'Tarifa por hora (\$) *';
@override String get post_shift => 'Publicar Turno';
}
// Path: staff_authentication.profile_setup_page.steps
class _TranslationsStaffAuthenticationProfileSetupPageStepsEs implements TranslationsStaffAuthenticationProfileSetupPageStepsEn {
_TranslationsStaffAuthenticationProfileSetupPageStepsEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get basic => 'Información básica';
@override String get location => 'Ubicación';
@override String get experience => 'Experiencia';
}
// Path: staff_authentication.profile_setup_page.basic_info
class _TranslationsStaffAuthenticationProfileSetupPageBasicInfoEs implements TranslationsStaffAuthenticationProfileSetupPageBasicInfoEn {
_TranslationsStaffAuthenticationProfileSetupPageBasicInfoEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => 'Conozcámonos';
@override String get subtitle => 'Cuéntanos un poco sobre ti';
@override String get full_name_label => 'Nombre completo *';
@override String get full_name_hint => 'Juan Pérez';
@override String get bio_label => 'Biografía corta';
@override String get bio_hint => 'Profesional experimentado en hostelería...';
}
// Path: staff_authentication.profile_setup_page.location
class _TranslationsStaffAuthenticationProfileSetupPageLocationEs implements TranslationsStaffAuthenticationProfileSetupPageLocationEn {
_TranslationsStaffAuthenticationProfileSetupPageLocationEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => '¿Dónde quieres trabajar?';
@override String get subtitle => 'Agrega tus ubicaciones de trabajo preferidas';
@override String get add_location_label => 'Agregar ubicación *';
@override String get add_location_hint => 'Ciudad o código postal';
@override String get add_button => 'Agregar';
@override String max_distance({required Object distance}) => 'Distancia máxima: ${distance} millas';
@override String get min_dist_label => '5 mi';
@override String get max_dist_label => '50 mi';
}
// Path: staff_authentication.profile_setup_page.experience
class _TranslationsStaffAuthenticationProfileSetupPageExperienceEs implements TranslationsStaffAuthenticationProfileSetupPageExperienceEn {
_TranslationsStaffAuthenticationProfileSetupPageExperienceEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get title => '¿Cuáles son tus habilidades?';
@override String get subtitle => 'Selecciona todas las que correspondan';
@override String get skills_label => 'Habilidades *';
@override String get industries_label => 'Industrias preferidas';
@override late final _TranslationsStaffAuthenticationProfileSetupPageExperienceSkillsEs skills = _TranslationsStaffAuthenticationProfileSetupPageExperienceSkillsEs._(_root);
@override late final _TranslationsStaffAuthenticationProfileSetupPageExperienceIndustriesEs industries = _TranslationsStaffAuthenticationProfileSetupPageExperienceIndustriesEs._(_root);
}
// Path: staff_authentication.profile_setup_page.experience.skills
class _TranslationsStaffAuthenticationProfileSetupPageExperienceSkillsEs implements TranslationsStaffAuthenticationProfileSetupPageExperienceSkillsEn {
_TranslationsStaffAuthenticationProfileSetupPageExperienceSkillsEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get food_service => 'Servicio de comida';
@override String get bartending => 'Preparación de bebidas';
@override String get warehouse => 'Almacén';
@override String get retail => 'Venta minorista';
@override String get events => 'Eventos';
@override String get customer_service => 'Servicio al cliente';
@override String get cleaning => 'Limpieza';
@override String get security => 'Seguridad';
@override String get driving => 'Conducción';
@override String get cooking => 'Cocina';
}
// Path: staff_authentication.profile_setup_page.experience.industries
class _TranslationsStaffAuthenticationProfileSetupPageExperienceIndustriesEs implements TranslationsStaffAuthenticationProfileSetupPageExperienceIndustriesEn {
_TranslationsStaffAuthenticationProfileSetupPageExperienceIndustriesEs._(this._root);
final TranslationsEs _root; // ignore: unused_field
// Translations
@override String get hospitality => 'Hostelería';
@override String get food_service => 'Servicio de comida';
@override String get warehouse => 'Almacén';
@override String get events => 'Eventos';
@override String get retail => 'Venta minorista';
@override String get healthcare => 'Atención médica';
}
/// The flat map containing all translations for locale <es>.
/// Only for edge cases! For simple maps, use the map function of this library.
///
/// The Dart AOT compiler has issues with very large switch statements,
/// so the map is split into smaller functions (512 entries each).
extension on TranslationsEs {
dynamic _flatMapFunction(String path) {
return switch (path) {
'common.ok' => 'Aceptar',
'common.cancel' => 'Cancelar',
'common.save' => 'Guardar',
'common.delete' => 'Eliminar',
'common.continue_text' => 'Continuar',
'settings.language' => 'Idioma',
'settings.change_language' => 'Cambiar Idioma',
'staff_authentication.get_started_page.title_part1' => 'Trabaja, Crece, ',
'staff_authentication.get_started_page.title_part2' => 'Elévate',
'staff_authentication.get_started_page.subtitle' => 'Construye tu carrera en hostelería con \nflexibilidad y libertad.',
'staff_authentication.get_started_page.sign_up_button' => 'Registrarse',
'staff_authentication.get_started_page.log_in_button' => 'Iniciar sesión',
'staff_authentication.phone_verification_page.validation_error' => 'Por favor, ingresa un número de teléfono válido de 10 dígitos',
'staff_authentication.phone_verification_page.send_code_button' => 'Enviar código',
'staff_authentication.phone_verification_page.enter_code_title' => 'Ingresa el código de verificación',
'staff_authentication.phone_verification_page.code_sent_message' => 'Enviamos un código de 6 dígitos a ',
'staff_authentication.phone_verification_page.code_sent_instruction' => '. Ingrésalo a continuación para verificar tu cuenta.',
'staff_authentication.phone_input.title' => 'Verifica tu número de teléfono',
'staff_authentication.phone_input.subtitle' => 'Te enviaremos un código de verificación para comenzar.',
'staff_authentication.phone_input.label' => 'Número de teléfono',
'staff_authentication.phone_input.hint' => 'Ingresa tu número',
'staff_authentication.otp_verification.did_not_get_code' => '¿No recibiste el código?',
'staff_authentication.otp_verification.resend_in' => ({required Object seconds}) => 'Reenviar en ${seconds} s',
'staff_authentication.otp_verification.resend_code' => 'Reenviar código',
'staff_authentication.profile_setup_page.step_indicator' => ({required Object current, required Object total}) => 'Paso ${current} de ${total}',
'staff_authentication.profile_setup_page.error_occurred' => 'Ocurrió un error',
'staff_authentication.profile_setup_page.complete_setup_button' => 'Completar configuración',
'staff_authentication.profile_setup_page.steps.basic' => 'Información básica',
'staff_authentication.profile_setup_page.steps.location' => 'Ubicación',
'staff_authentication.profile_setup_page.steps.experience' => 'Experiencia',
'staff_authentication.profile_setup_page.basic_info.title' => 'Conozcámonos',
'staff_authentication.profile_setup_page.basic_info.subtitle' => 'Cuéntanos un poco sobre ti',
'staff_authentication.profile_setup_page.basic_info.full_name_label' => 'Nombre completo *',
'staff_authentication.profile_setup_page.basic_info.full_name_hint' => 'Juan Pérez',
'staff_authentication.profile_setup_page.basic_info.bio_label' => 'Biografía corta',
'staff_authentication.profile_setup_page.basic_info.bio_hint' => 'Profesional experimentado en hostelería...',
'staff_authentication.profile_setup_page.location.title' => '¿Dónde quieres trabajar?',
'staff_authentication.profile_setup_page.location.subtitle' => 'Agrega tus ubicaciones de trabajo preferidas',
'staff_authentication.profile_setup_page.location.add_location_label' => 'Agregar ubicación *',
'staff_authentication.profile_setup_page.location.add_location_hint' => 'Ciudad o código postal',
'staff_authentication.profile_setup_page.location.add_button' => 'Agregar',
'staff_authentication.profile_setup_page.location.max_distance' => ({required Object distance}) => 'Distancia máxima: ${distance} millas',
'staff_authentication.profile_setup_page.location.min_dist_label' => '5 mi',
'staff_authentication.profile_setup_page.location.max_dist_label' => '50 mi',
'staff_authentication.profile_setup_page.experience.title' => '¿Cuáles son tus habilidades?',
'staff_authentication.profile_setup_page.experience.subtitle' => 'Selecciona todas las que correspondan',
'staff_authentication.profile_setup_page.experience.skills_label' => 'Habilidades *',
'staff_authentication.profile_setup_page.experience.industries_label' => 'Industrias preferidas',
'staff_authentication.profile_setup_page.experience.skills.food_service' => 'Servicio de comida',
'staff_authentication.profile_setup_page.experience.skills.bartending' => 'Preparación de bebidas',
'staff_authentication.profile_setup_page.experience.skills.warehouse' => 'Almacén',
'staff_authentication.profile_setup_page.experience.skills.retail' => 'Venta minorista',
'staff_authentication.profile_setup_page.experience.skills.events' => 'Eventos',
'staff_authentication.profile_setup_page.experience.skills.customer_service' => 'Servicio al cliente',
'staff_authentication.profile_setup_page.experience.skills.cleaning' => 'Limpieza',
'staff_authentication.profile_setup_page.experience.skills.security' => 'Seguridad',
'staff_authentication.profile_setup_page.experience.skills.driving' => 'Conducción',
'staff_authentication.profile_setup_page.experience.skills.cooking' => 'Cocina',
'staff_authentication.profile_setup_page.experience.industries.hospitality' => 'Hostelería',
'staff_authentication.profile_setup_page.experience.industries.food_service' => 'Servicio de comida',
'staff_authentication.profile_setup_page.experience.industries.warehouse' => 'Almacén',
'staff_authentication.profile_setup_page.experience.industries.events' => 'Eventos',
'staff_authentication.profile_setup_page.experience.industries.retail' => 'Venta minorista',
'staff_authentication.profile_setup_page.experience.industries.healthcare' => 'Atención médica',
'staff_authentication.common.trouble_question' => '¿Tienes problemas? ',
'staff_authentication.common.contact_support' => 'Contactar a soporte',
'client_authentication.get_started_page.title' => 'Toma el control de tus\nturnos y eventos',
'client_authentication.get_started_page.subtitle' => 'Optimiza tus operaciones con potentes herramientas para gestionar horarios, realizar un seguimiento del rendimiento y mantener a tu equipo en la misma página, todo en un solo lugar',
'client_authentication.get_started_page.sign_in_button' => 'Iniciar sesión',
'client_authentication.get_started_page.create_account_button' => 'Crear cuenta',
'client_authentication.sign_in_page.title' => 'Bienvenido de nuevo',
'client_authentication.sign_in_page.subtitle' => 'Inicia sesión para gestionar tus turnos y trabajadores',
'client_authentication.sign_in_page.email_label' => 'Correo electrónico',
'client_authentication.sign_in_page.email_hint' => 'Ingresa tu correo electrónico',
'client_authentication.sign_in_page.password_label' => 'Contraseña',
'client_authentication.sign_in_page.password_hint' => 'Ingresa tu contraseña',
'client_authentication.sign_in_page.forgot_password' => '¿Olvidaste tu contraseña?',
'client_authentication.sign_in_page.sign_in_button' => 'Iniciar sesión',
'client_authentication.sign_in_page.or_divider' => 'o',
'client_authentication.sign_in_page.social_apple' => 'Iniciar sesión con Apple',
'client_authentication.sign_in_page.social_google' => 'Iniciar sesión con Google',
'client_authentication.sign_in_page.no_account' => '¿No tienes una cuenta? ',
'client_authentication.sign_in_page.sign_up_link' => 'Regístrate',
'client_authentication.sign_up_page.title' => 'Crear cuenta',
'client_authentication.sign_up_page.subtitle' => 'Comienza con Krow para tu negocio',
'client_authentication.sign_up_page.company_label' => 'Nombre de la empresa',
'client_authentication.sign_up_page.company_hint' => 'Ingresa el nombre de la empresa',
'client_authentication.sign_up_page.email_label' => 'Correo electrónico',
'client_authentication.sign_up_page.email_hint' => 'Ingresa tu correo electrónico',
'client_authentication.sign_up_page.password_label' => 'Contraseña',
'client_authentication.sign_up_page.password_hint' => 'Crea una contraseña',
'client_authentication.sign_up_page.confirm_password_label' => 'Confirmar contraseña',
'client_authentication.sign_up_page.confirm_password_hint' => 'Confirma tu contraseña',
'client_authentication.sign_up_page.create_account_button' => 'Crear cuenta',
'client_authentication.sign_up_page.or_divider' => 'o',
'client_authentication.sign_up_page.social_apple' => 'Regístrate con Apple',
'client_authentication.sign_up_page.social_google' => 'Regístrate con Google',
'client_authentication.sign_up_page.has_account' => '¿Ya tienes una cuenta? ',
'client_authentication.sign_up_page.sign_in_link' => 'Iniciar sesión',
'client_home.shift_created_success' => 'Orden de turno enviada con éxito',
'client_home.dashboard.welcome_back' => 'Bienvenido de nuevo',
'client_home.dashboard.edit_mode_active' => 'Modo Edición Activo',
'client_home.dashboard.drag_instruction' => 'Arrastra para reordenar, cambia la visibilidad',
'client_home.dashboard.reset' => 'Restablecer',
'client_home.dashboard.metric_needed' => 'Necesario',
'client_home.dashboard.metric_filled' => 'Lleno',
'client_home.dashboard.metric_open' => 'Abierto',
'client_home.dashboard.view_all' => 'Ver todo',
'client_home.dashboard.insight_lightbulb' => ({required Object amount}) => 'Ahorra ${amount}/mes',
'client_home.dashboard.insight_tip' => 'Reserva con 48h de antelación para mejores tarifas',
'client_home.widgets.actions' => 'Acciones Rápidas',
'client_home.widgets.reorder' => 'Reordenar',
'client_home.widgets.coverage' => 'Cobertura de Hoy',
'client_home.widgets.spending' => 'Información de Gastos',
'client_home.widgets.live_activity' => 'Actividad en Vivo',
'client_home.actions.rapid' => 'RÁPIDO',
'client_home.actions.rapid_subtitle' => 'Urgente mismo día',
'client_home.actions.create_order' => 'Crear Orden',
'client_home.actions.create_order_subtitle' => 'Programar turnos',
'client_home.reorder.title' => 'REORDENAR',
'client_home.reorder.reorder_button' => 'Reordenar',
'client_home.reorder.per_hr' => ({required Object amount}) => '${amount}/hr',
'client_home.form.edit_reorder' => 'Editar y Reordenar',
'client_home.form.post_new' => 'Publicar un Nuevo Turno',
'client_home.form.review_subtitle' => 'Revisa y edita los detalles antes de publicar',
'client_home.form.date_label' => 'Fecha *',
'client_home.form.date_hint' => 'mm/dd/aaaa',
'client_home.form.location_label' => 'Ubicación *',
'client_home.form.location_hint' => 'Dirección del negocio',
'client_home.form.positions_title' => 'Posiciones',
'client_home.form.add_position' => 'Añadir Posición',
'client_home.form.role_label' => 'Rol *',
'client_home.form.role_hint' => 'Seleccionar rol',
'client_home.form.start_time' => 'Hora de Inicio *',
'client_home.form.end_time' => 'Hora de Fin *',
'client_home.form.workers_needed' => 'Trabajadores Necesarios *',
'client_home.form.hourly_rate' => 'Tarifa por hora (\$) *',
'client_home.form.post_shift' => 'Publicar Turno',
_ => null,
};
}
}

View File

@@ -0,0 +1,46 @@
import 'package:flutter_modular/flutter_modular.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'data/datasources/locale_local_data_source.dart';
import 'data/repositories_impl/locale_repository_impl.dart';
import 'domain/repositories/locale_repository_interface.dart';
import 'domain/usecases/get_locale_use_case.dart';
import 'domain/usecases/set_locale_use_case.dart';
import 'bloc/locale_bloc.dart';
/// A [ModularModule] that manages localization dependencies.
///
/// This module registers all necessary data sources, repositories, use cases,
/// and the BLoC required for application-wide localization management.
class LocalizationModule extends Module {
@override
void binds(Injector i) {
// External Dependencies
i.addInstance<SharedPreferencesAsync>(SharedPreferencesAsync());
// Data Sources
i.addSingleton<LocaleLocalDataSource>(
() => LocaleLocalDataSourceImpl(i.get<SharedPreferencesAsync>()),
);
// Repositories
i.addSingleton<LocaleRepositoryInterface>(
() => LocaleRepositoryImpl(i.get<LocaleLocalDataSource>()),
);
// Use Cases
i.addSingleton<GetLocaleUseCase>(
() => GetLocaleUseCase(i.get<LocaleRepositoryInterface>()),
);
i.addSingleton<SetLocaleUseCase>(
() => SetLocaleUseCase(i.get<LocaleRepositoryInterface>()),
);
// BLoCs
i.addSingleton<LocaleBloc>(
() => LocaleBloc(
getLocaleUseCase: i.get<GetLocaleUseCase>(),
setLocaleUseCase: i.get<SetLocaleUseCase>(),
),
);
}
}