import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; import 'package:shared_preferences/shared_preferences.dart'; const _kLocaleStorageKey = '__locale_key__'; class FFLocalizations { FFLocalizations(this.locale); final Locale locale; static FFLocalizations of(BuildContext context) => Localizations.of(context, FFLocalizations)!; static List languages() => ['pt', 'en']; static late SharedPreferences _prefs; static Future initialize() async => _prefs = await SharedPreferences.getInstance(); static Future storeLocale(String locale) => _prefs.setString(_kLocaleStorageKey, locale); static Locale? getStoredLocale() { final locale = _prefs.getString(_kLocaleStorageKey); return locale != null && locale.isNotEmpty ? createLocale(locale) : null; } String get languageCode => locale.toString(); String? get languageShortCode => _languagesWithShortCode.contains(locale.toString()) ? '${locale.toString()}_short' : null; int get languageIndex => languages().contains(languageCode) ? languages().indexOf(languageCode) : 0; String getText(String key) => (kTranslationsMap[key] ?? {})[locale.toString()] ?? ''; String getVariableText({ String? ptText = '', String? enText = '', }) => [ptText, enText][languageIndex] ?? ''; static const Set _languagesWithShortCode = { 'ar', 'az', 'ca', 'cs', 'da', 'de', 'dv', 'en', 'es', 'et', 'fi', 'fr', 'gr', 'he', 'hi', 'hu', 'it', 'km', 'ku', 'mn', 'ms', 'no', 'pt', 'ro', 'ru', 'rw', 'sv', 'th', 'uk', 'vi', }; } class FFLocalizationsDelegate extends LocalizationsDelegate { const FFLocalizationsDelegate(); @override bool isSupported(Locale locale) { final language = locale.toString(); return FFLocalizations.languages().contains( language.endsWith('_') ? language.substring(0, language.length - 1) : language, ); } @override Future load(Locale locale) => SynchronousFuture(FFLocalizations(locale)); @override bool shouldReload(FFLocalizationsDelegate old) => false; } Locale createLocale(String language) => language.contains('_') ? Locale.fromSubtags( languageCode: language.split('_').first, scriptCode: language.split('_').last, ) : Locale(language); final kTranslationsMap = >>[ // LoginPage { 'uem0mca5': { 'pt': 'VAMOS LA! ENTRE COM A SUA CONTA', 'en': 'LET\'S GO! SIGN IN WITH YOUR ACCOUNT', }, '90ls8ppo': { 'pt': 'Email', 'en': 'Email', }, 'rvlumyaw': { 'pt': 'Senha', 'en': 'Password', }, '2d3903lt': { 'pt': 'Entrar', 'en': 'Sign-In', }, 'zj6pyujp': { 'pt': 'Cadastrar', 'en': 'Sign-Up', }, 'iqhyif1d': { 'pt': 'Entrar', 'en': 'Sign-In', }, '5x5bp2u1': { 'pt': 'Cadastrar', 'en': 'Sign-Up', }, '1fqjz9q7': { 'pt': 'Você esqueceu a sua senha?', 'en': 'Have you forgotten your password?', }, '7miyd406': { 'pt': ' Recupere aqui', 'en': 'recover here', }, '63xv5ewj': { 'pt': 'Termo de Uso', 'en': 'Terms of use', }, 'ef5lm94r': { 'pt': 'Home', 'en': '', }, }, // ForgotPasswordPage { 'lpduiuif': { 'pt': 'ESQUECEU SUA SENHA?', 'en': 'FORGOT YOUR PASSWORD?', }, '8t05j98w': { 'pt': 'Não se preucupe nós vamos te ajudar, digite o email cadastrado no aplicativo e clique em enviar.', 'en': 'Don\'t worry, we will help you, enter the email registered in the application and click send.', }, '4gcoci7a': { 'pt': 'Email', 'en': 'Email', }, 'a7p2iikz': { 'pt': 'digite o seu email.....', 'en': 'enter your email.....', }, 'z9ghb8dz': { 'pt': 'Enviar', 'en': 'To send', }, '3xnxor0t': { 'pt': 'Home', 'en': '', }, }, // homePage { 'lyiat6s2': { 'pt': 'NOME DO MORADOR', 'en': 'RESIDENT\'S NAME', }, '3jgvv75o': { 'pt': '', 'en': '', }, 'dlaeicxd': { 'pt': 'Auto-Visita', 'en': 'Self-Visit', }, '53jd930v': { 'pt': 'Condominio', 'en': 'Condominium', }, 'ptsx0rln': { 'pt': 'Cadastrar Pet', 'en': 'Register Pet', }, 'rgxgw626': { 'pt': 'Cadastrar Visitante', 'en': 'Register Visitor', }, 'j2tn9lpw': { 'pt': 'QR Code de Acesso', 'en': 'Access QR Code', }, '9weuwgs1': { 'pt': 'Histórico de Acesso', 'en': 'Access History', }, 'vuk5bjau': { 'pt': 'Agendar Visita', 'en': 'Schedule Visit', }, 'xx0db4wi': { 'pt': 'Sair', 'en': 'Logout', }, 'rg9pzkpz': { 'pt': 'FRE ACCESS', 'en': 'FREE ACCESS', }, 'mp6igsok': { 'pt': 'Home', 'en': '', }, }, // RegisterPage { 'oxy0n1p4': { 'pt': 'INSIRA SEU EMAIL E SENHA, VAMOS TE CADASTRAR!', 'en': 'ENTER YOUR EMAIL AND PASSWORD, LET\'S REGISTER YOU!', }, 'w0y3fz89': { 'pt': 'Nome', 'en': 'Name', }, '4bfdpd0o': { 'pt': 'Email', 'en': 'Email', }, 'v0iobs5a': { 'pt': '', 'en': '', }, 'byjglkpk': { 'pt': 'Senha', 'en': 'Password', }, 'w9vrsnmf': { 'pt': 'Cadastrar-se', 'en': 'Sign-Up', }, 'zep60lcd': { 'pt': 'Você já tem uma conta? ', 'en': 'You already have an account?', }, 'tl8k1ld9': { 'pt': 'Clique aqui', 'en': 'Click here', }, 'dbtzii7i': { 'pt': 'Termo de Uso', 'en': '', }, 'tzy6n0n4': { 'pt': 'Home', 'en': '', }, }, // WelcomePage { '3pl41wkq': { 'pt': 'UMA EXPERIÊCIA COMPLETA', 'en': 'A COMPLETE EXPERIENCE', }, '13nhoxpg': { 'pt': 'COM CONFORTO ONDE VOCÊ ESTIVER.', 'en': 'WITH COMFORT WHEREVER YOU ARE.', }, 'zt5uc5g5': { 'pt': 'Entrar', 'en': 'Sign-In', }, 'jteakpo0': { 'pt': 'Cadastrar', 'en': 'Sign-Up', }, 'qoc86gvo': { 'pt': 'Entrar', 'en': 'Sign-In', }, 'p5tgmj0c': { 'pt': 'Cadastrar', 'en': 'Sign-Up', }, 'qls72pio': { 'pt': 'Home', 'en': '', }, }, // registerVisitorPage { 'q8cct5lk': { 'pt': 'Cadastrar Visitante', 'en': 'Register Visitor', }, 'p4ftwxcy': { 'pt': 'Clique para adicionar a foto para o visitante', 'en': 'Click to add photo for visitor', }, 'zazj5d8b': { 'pt': 'Preencha o formulário com os dados do visitante', 'en': 'Fill in the form with the visitor\'s data', }, 'v7g73yik': { 'pt': 'Nome', 'en': 'Name', }, 'yp23q90m': { 'pt': 'Selecione o tipo:', 'en': 'Select type:', }, 'n8vddmcq': { 'pt': 'Visitante ', 'en': 'Visitor', }, '9luaa09e': { 'pt': 'Prestador de Serviço', 'en': 'Service provider', }, 'pmezihb4': { 'pt': 'Selecione...', 'en': 'Please select...', }, 'yza6i4t7': { 'pt': 'Search for an item...', 'en': '', }, 'rl8tvwnr': { 'pt': 'Documento', 'en': 'Document', }, 'bqpucwh0': { 'pt': 'Contatos', 'en': 'Contacts', }, 'h84ls2r6': { 'pt': 'Telefone', 'en': 'Telephone', }, 'fqp7qmka': { 'pt': 'Email', 'en': 'Email', }, 'okbw0aiu': { 'pt': 'Cadastrar', 'en': 'Register', }, 'xtcz66ar': { 'pt': 'registerVisitor', 'en': '', }, }, // scheduleCompleteVisitPage { 'e4w9lbke': { 'pt': 'Criar Agendamento', 'en': 'Create Schedule', }, '47bsumoy': { 'pt': 'Histórico de Visitas', 'en': 'Visit History', }, '15ekd1ge': { 'pt': 'Agendar Visita', 'en': 'Schedule Visit', }, 'qo0pg2at': { 'pt': 'Quais visitantes você deseja cadastrar?', 'en': 'Which visitors do you want to register?', }, 'i0jhuu3e': { 'pt': 'Clique para adicionar um visitante', 'en': 'Click to add photo for visitor', }, 'z4ry3tge': { 'pt': 'Qual o período de validade da visita?', 'en': 'Visit Validity Period', }, '9mg9nv2j': { 'pt': 'Ínicio da Visita', 'en': 'Start of the Visit', }, 'y5s85khj': { 'pt': 'Quando a visitas se inicia?', 'en': 'When does the visit start?', }, '4o0cbb70': { 'pt': 'Término da Visita', 'en': 'End of Visit', }, 'bhmgddc4': { 'pt': 'Quando a visita terminá?', 'en': 'When will the visit end?', }, 'p81uol2v': { 'pt': 'Quais são os motivos da visita?', 'en': 'What are the reasons for the visit?', }, 'x1ij847i': { 'pt': 'Escolha um motivo aqui', 'en': 'Choose a reason here', }, 'ejyyypuz': { 'pt': 'Search for an item...', 'en': '', }, 'kmgv5j7x': { 'pt': 'Escolha um nível de acesso aqui', 'en': 'Choose an access level here', }, 'izwi0ya7': { 'pt': 'Search for an item...', 'en': '', }, 'mddp33o0': { 'pt': 'Visita se encerra após o primeiro acesso?', 'en': 'Does the visit end after the first access?', }, '68j9gw4h': { 'pt': 'Visita única', 'en': 'Single visit', }, '9rudpkq7': { 'pt': 'Você tem alguma observação sobre está visita?', 'en': 'Do you have any observations about this visit?', }, '4rgpxrfe': { 'pt': 'Observações da Visita', 'en': 'Visit Observations', }, '7knytis2': { 'pt': 'Escreva as suas observações aqui', 'en': 'Write your observations here', }, 'v3mpyspm': { 'pt': 'scheduleVisit', 'en': '', }, }, // scheduleProvisionalVisitPage { 'n7bbd202': { 'pt': 'Agendamento Provisório', 'en': 'Provisional Scheduling', }, 'i4xujgbn': { 'pt': 'Visita Provisória', 'en': 'Provisional Visit', }, 'x7at46ur': { 'pt': 'Quais visitantes você deseja cadastrar?', 'en': 'Which visitors do you want to register?', }, 'shj19b2o': { 'pt': 'Qual o período de validade da visita?', 'en': 'Visit Validity Period', }, '8zgsw5so': { 'pt': 'Ínicio da Visita', 'en': 'Start of the Visit', }, 'p16wm7kp': { 'pt': 'Quando a visitas se inicia?', 'en': 'When does the visit start?', }, '3zfd7uf9': { 'pt': 'Qual o nome do visitante?', 'en': 'What is the visitor\'s name?', }, 'wehvxbz4': { 'pt': 'Nome do Visitante', 'en': 'Visitor Name', }, 'juh7f24w': { 'pt': 'Escreva o nome do visitante aqui', 'en': 'Write the visitor\'s name here', }, 'jhss056s': { 'pt': 'Você tem alguma observação sobre está visita?', 'en': 'Do you have any observations about this visit?', }, 'cw8b3tbb': { 'pt': 'Observações da Visita', 'en': 'Visit Observations', }, 'k4qkbv1f': { 'pt': 'Escreva as suas observações aqui', 'en': 'Write your observations here', }, 'lhzhh2jb': { 'pt': 'scheduleVisit', 'en': '', }, }, // visitorDetailsModal { 'kqzf7nx2': { 'pt': 'Nome do Visitante', 'en': 'Visitor Name', }, 'hz7ivuqn': { 'pt': 'Tipo de Visitante', 'en': 'Visitor Type', }, 'rwqn0det': { 'pt': '(00) 0 0000-0000', 'en': 'Telephone', }, '0wqbiekp': { 'pt': 'email@provider.etc', 'en': 'Email', }, }, // throwException { 'e58xxxiq': { 'pt': 'ERRO', 'en': 'ERROR', }, }, // regisiterVistorComponent { 'wnhkedzt': { 'pt': 'Cadastrar Visitante', 'en': 'Register Visitor', }, 'kpd31z4d': { 'pt': 'Clique para adicionar a foto para o visitante', 'en': 'Click to add photo for visitor', }, 'q986vs4m': { 'pt': 'Preencha o formulário com os dados do visitante', 'en': 'Fill in the form with the visitor\'s data', }, 'llcw2tei': { 'pt': 'Nome', 'en': 'Name', }, '67ykbznt': { 'pt': 'Selecione o tipo:', 'en': 'Select type:', }, 'ugjkeiz7': { 'pt': 'Visitante ', 'en': 'Visitor', }, '8nlk5xlk': { 'pt': 'Prestador de Serviço', 'en': 'Service provider', }, 'kw07i43y': { 'pt': 'Selecione...', 'en': 'Please select...', }, 'e887o707': { 'pt': 'Search for an item...', 'en': '', }, '96ayre48': { 'pt': 'Documento', 'en': 'Document', }, 'j0g7ggs2': { 'pt': 'Contatos', 'en': 'Contacts', }, 'ybdjabnd': { 'pt': 'Telefone', 'en': 'Telephone', }, 'tlr6uxo4': { 'pt': 'Email', 'en': 'Email', }, '65puvap9': { 'pt': 'Cadastrar', 'en': 'Register', }, }, // visitorSearchComponent { 'cjlpru1m': { 'pt': 'Procure pelo documento do visitante ', 'en': 'Search for the visitor\'s document', }, '8i1qszba': { 'pt': 'test', 'en': '', }, 'oj12tamm': { 'pt': 'test', 'en': '', }, '9coywebh': { 'pt': 'Visitantes encontrados', 'en': 'Visitors Found', }, '6f5p0fv6': { 'pt': '24', 'en': '24', }, 'ug6qzyla': { 'pt': 'Adicionar', 'en': 'To add', }, }, // visitorNotFoundComponent { '1p9mykbj': { 'pt': 'Usuário não encontrado', 'en': 'User not found', }, 'kt937sp6': { 'pt': 'O documento inserido não corresponde a nenhum usuário cadastrado no sistema. Verifique o documento inserido ou adicione um novo visitante ao sistema.', 'en': 'The document inserted does not correspond to any user registered in the system. Check the inserted document or add a new visitor to the system.', }, 'y2x4nfcn': { 'pt': 'Adicionar ', 'en': 'To add', }, }, // viewVisitDetail { '9yu35pzg': { 'pt': 'Encerramento da Visita', 'en': 'Closing of the Visit', }, 'aj6scczp': { 'pt': 'Início', 'en': 'Start', }, 'ub084nhy': { 'pt': 'dd/mm/yyyy', 'en': 'dd/mm/yyyy', }, 'rvi5z7wg': { 'pt': 'Término', 'en': 'Termination', }, 'ixs67mrz': { 'pt': 'dd/mm/yyyy', 'en': 'dd/mm/yyyy', }, 'yxilg7ek': { 'pt': 'Motivo da Visita', 'en': 'Start of the Visit', }, 'ypeydbem': { 'pt': 'Motivo', 'en': 'Reason', }, 'dgr3pk3a': { 'pt': 'Nível de Acesso', 'en': 'Access Level', }, 'rs3d4gb8': { 'pt': 'Nível de Acesso', 'en': '', }, 'lppn9rxa': { 'pt': 'Observações da Visita', 'en': 'Visit Observations', }, }, // scheduleVisitDetail { '7w4fohoa': { 'pt': 'Encerramento da Visita', 'en': 'Closing of the Visit', }, 'snah4iet': { 'pt': 'Início', 'en': 'Start', }, '0cp1e31d': { 'pt': 'dd/mm/yyyy', 'en': 'dd/mm/yyyy', }, 'abppdgz3': { 'pt': 'Término', 'en': 'Termination', }, 'kqralft4': { 'pt': 'dd/mm/yyyy', 'en': 'dd/mm/yyyy', }, 'xjxhzqqm': { 'pt': 'Motivo da Visita', 'en': 'Start of the Visit', }, '47oezdm6': { 'pt': 'Motivo', 'en': 'Reason', }, '2ujg7u18': { 'pt': 'Nível de Acesso', 'en': 'Access Level', }, '3emmbbfv': { 'pt': 'Nível de Acesso', 'en': '', }, 'ritce5uw': { 'pt': 'Observações da Visita', 'en': 'Visit Observations', }, }, // optionSelectionModal { 'omxabblt': { 'pt': 'Agenda \nRápida', 'en': 'Schedule \nQuick', }, 'vpy51li0': { 'pt': 'Agenda\nProvisória', 'en': 'Schedule\nProvisional', }, '8ad3hms9': { 'pt': 'Agenda\nCompleta', 'en': 'Schedule\nComplete', }, }, // menuListViewComponent { 'utgue9a5': { 'pt': 'Agendar \nVisita', 'en': 'Schedule \nVisit', }, '82b5f8yz': { 'pt': 'Cadastrar\nVisitante', 'en': 'Register\nVisitor', }, 't4ie13ut': { 'pt': 'Vincular \nCondomínio', 'en': 'Link\nCondominium', }, 'n3n76pha': { 'pt': 'Cadastrar \nPet', 'en': 'Register\npet', }, 'xlp8dyn6': { 'pt': 'Agendar \nVisita', 'en': 'To schedule\nVisit', }, 'l6b9o7yn': { 'pt': 'QR Code \nde Acesso', 'en': 'QR Code\nAccess', }, '45gqx8e0': { 'pt': 'Agenda \nAuto-Visita', 'en': 'Schedule\nSelf-Visit', }, }, // menuStaggeredViewComponent { 'jn7p6pj6': { 'pt': 'Agenda \nAuto-Visita', 'en': 'Schedule\nSelf-Visit', }, 'yymmdtyv': { 'pt': 'Cadastrar\nVisitante', 'en': 'Register\nVisitor', }, 'f2jbm9jz': { 'pt': 'Vincular \nCondomínio', 'en': 'Link\nCondominium', }, 'rs5a7h6m': { 'pt': 'Cadastrar \nPet', 'en': 'Register\npet', }, 'if2zuaok': { 'pt': 'Agendar \nVisita', 'en': 'To schedule\nVisit', }, 'r4mjqq6s': { 'pt': 'Agendar \nVisita', 'en': 'To schedule\nVisit', }, 'cilu7ief': { 'pt': 'QR Code \nde Acesso', 'en': 'QR Code\nAccess', }, }, // messageWellComponent { '8fworxmb': { 'pt': 'Mural de Mensagens', 'en': 'Message Wall', }, 'yikill36': { 'pt': 'Todos', 'en': 'All', }, }, // Miscellaneous { 'i5smty81': { 'pt': '', 'en': 'dd/mm/yyyy', }, 'kw89v4f5': { 'pt': '', 'en': '', }, 'lt3ssl76': { 'pt': '', 'en': '', }, 'fng3jimx': { 'pt': '', 'en': '', }, 'fl5g3od1': { 'pt': '', 'en': '', }, 'ypvz2z2w': { 'pt': '', 'en': '', }, '8qc8ukp7': { 'pt': '', 'en': '', }, '2e7jypoo': { 'pt': '', 'en': '', }, '3ns1uuql': { 'pt': '', 'en': '', }, '6wpbd6qf': { 'pt': '', 'en': '', }, '8lujanjg': { 'pt': '', 'en': '', }, 'uteo7q4l': { 'pt': '', 'en': '', }, 'fddqwa3t': { 'pt': '', 'en': '', }, 'qt1hznnl': { 'pt': '', 'en': '', }, 'ifdxkz4h': { 'pt': '', 'en': '', }, 'mrvjp805': { 'pt': '', 'en': '', }, '9n5qf96i': { 'pt': '', 'en': '', }, 'lmtedmcu': { 'pt': '', 'en': '', }, 'a8q9pni2': { 'pt': '', 'en': '', }, 'awm7dfw0': { 'pt': '', 'en': '', }, 'lradbjb6': { 'pt': '', 'en': '', }, 'j9igyop7': { 'pt': '', 'en': '', }, '7wsvuydm': { 'pt': '', 'en': '', }, 'vm22i4rf': { 'pt': '', 'en': '', }, 'uirsdmbi': { 'pt': '', 'en': '', }, 'm6r7vsdc': { 'pt': '', 'en': '', }, 'mqw2z9f3': { 'pt': '', 'en': '', }, }, ].reduce((a, b) => a..addAll(b));