diff --git a/app/lang/en-UD/cachet.php b/app/lang/en-UD/cachet.php index 5b0d0028..079dae70 100755 --- a/app/lang/en-UD/cachet.php +++ b/app/lang/en-UD/cachet.php @@ -13,12 +13,15 @@ return [ // Incidents 'incidents' => [ - 'none' => 'crwdns266:0crwdne266:0', + 'none' => 'crwdns430:0crwdne430:0', 'past' => 'crwdns296:0crwdne296:0', 'previous_week' => 'crwdns297:0crwdne297:0', 'next_week' => 'crwdns298:0crwdne298:0', - 'none' => 'crwdns266:0crwdne266:0', + 'none' => 'crwdns430:0crwdne430:0', + 'scheduled' => 'crwdns438:0crwdne438:0', + 'scheduled_at' => 'crwdns439:0crwdne439:0', 'status' => [ + 0 => 'crwdns440:0crwdne440:0', // TODO: Hopefully remove this. 1 => 'crwdns299:0crwdne299:0', 2 => 'crwdns300:0crwdne300:0', 3 => 'crwdns301:0crwdne301:0', @@ -37,6 +40,15 @@ return [ 'revoke' => 'crwdns304:0crwdne304:0', ], + // Metrics + 'metrics' => [ + 'filter' => [ + 'hourly' => 'crwdns441:0crwdne441:0', + 'daily' => 'crwdns442:0crwdne442:0', + 'monthly' => 'crwdns443:0crwdne443:0', + ], + ], + // Other 'powered_by' => 'crwdns11:0crwdne11:0', 'about_this_site' => 'crwdns150:0crwdne150:0', diff --git a/app/lang/en-UD/dashboard.php b/app/lang/en-UD/dashboard.php index ff648c6c..c9d5db25 100755 --- a/app/lang/en-UD/dashboard.php +++ b/app/lang/en-UD/dashboard.php @@ -6,6 +6,7 @@ return [ // Incidents 'incidents' => [ + 'title' => 'crwdns444:0crwdne444:0', 'incidents' => 'crwdns153:0crwdne153:0', 'logged' => 'crwdns305:0{0}crwdne305:0', 'incident-create-template' => 'crwdns306:0crwdne306:0', @@ -37,9 +38,29 @@ return [ ], ], + // Incident Maintenance + 'schedule' => [ + 'schedule' => 'crwdns445:0crwdne445:0', + 'scheduled_at' => 'crwdns446:0crwdne446:0', + 'add' => [ + 'title' => 'crwdns447:0crwdne447:0', + 'success' => 'crwdns448:0crwdne448:0', + 'failure' => 'crwdns449:0crwdne449:0', + ], + 'edit' => [ + 'title' => 'crwdns450:0crwdne450:0', + 'success' => 'crwdns451:0crwdne451:0', + 'failure' => 'crwdns452:0crwdne452:0', + ], + 'delete' => [ + 'success' => 'crwdns453:0crwdne453:0', + 'failure' => 'crwdns454:0crwdne454:0', + ], + ], + // Components 'components' => [ - 'components' => 'crwdns165:0crwdne165:0', + 'components' => 'crwdns431:0crwdne431:0', 'component_statuses' => 'crwdns321:0crwdne321:0', 'add' => [ 'title' => 'crwdns322:0crwdne322:0', @@ -61,6 +82,11 @@ return [ 'success' => 'crwdns331:0crwdne331:0', 'failure' => 'crwdns332:0crwdne332:0', ], + 'edit' => [ + 'title' => 'crwdns455:0crwdne455:0', + 'success' => 'crwdns456:0crwdne456:0', + 'failure' => 'crwdns457:0crwdne457:0', + ], ], ], @@ -68,9 +94,14 @@ return [ 'metrics' => [ 'metrics' => 'crwdns178:0crwdne178:0', 'add' => [ - 'title' => 'crwdns333:0crwdne333:0', - 'success' => 'crwdns334:0crwdne334:0', - 'failure' => 'crwdns335:0crwdne335:0', + 'title' => 'crwdns458:0crwdne458:0', + 'success' => 'crwdns459:0crwdne459:0', + 'failure' => 'crwdns460:0crwdne460:0', + ], + 'edit' => [ + 'title' => 'crwdns461:0crwdne461:0', + 'success' => 'crwdns462:0crwdne462:0', + 'failure' => 'crwdns463:0crwdne463:0', ], ], @@ -143,10 +174,10 @@ return [ 'steps' => [ 'component' => 'crwdns361:0crwdne361:0', 'incident' => 'crwdns362:0crwdne362:0', - 'customize' => 'crwdns363:0crwdne363:0', - 'team' => 'crwdns364:0crwdne364:0', - 'api' => 'crwdns365:0crwdne365:0', - 'two-factor' => 'crwdns366:0crwdne366:0', + 'customize' => 'crwdns432:0crwdne432:0', + 'team' => 'crwdns433:0crwdne433:0', + 'api' => 'crwdns434:0crwdne434:0', + 'two-factor' => 'crwdns435:0crwdne435:0', ], ], diff --git a/app/lang/en-UD/forms.php b/app/lang/en-UD/forms.php index 6e299d99..899b3a79 100755 --- a/app/lang/en-UD/forms.php +++ b/app/lang/en-UD/forms.php @@ -30,6 +30,7 @@ return [ 'component' => 'crwdns386:0crwdne386:0', 'message' => 'crwdns387:0crwdne387:0', 'message-help' => 'crwdns388:0crwdne388:0', + 'scheduled_at' => 'crwdns464:0crwdne464:0', 'templates' => [ 'name' => 'crwdns389:0crwdne389:0', @@ -52,6 +53,20 @@ return [ ], ], + // Metric form fields + 'metrics' => [ + 'name' => 'crwdns465:0crwdne465:0', + 'suffix' => 'crwdns466:0crwdne466:0', + 'description' => 'crwdns467:0crwdne467:0', + 'description-help' => 'crwdns468:0crwdne468:0', + 'display-chart' => 'crwdns469:0crwdne469:0', + 'default-value' => 'crwdns470:0crwdne470:0', + + 'points' => [ + 'value' => 'crwdns471:0crwdne471:0', + ], + ], + // Settings 'settings' => [ /// Application setup @@ -61,6 +76,7 @@ return [ 'site-timezone' => 'crwdns399:0crwdne399:0', 'site-locale' => 'crwdns400:0crwdne400:0', 'date-format' => 'crwdns401:0crwdne401:0', + 'display-graphs' => 'crwdns472:0crwdne472:0', 'about-this-page' => 'crwdns402:0crwdne402:0', 'days-of-incidents' => 'crwdns403:0crwdne403:0', 'banner' => 'crwdns404:0crwdne404:0', @@ -85,7 +101,7 @@ return [ 'email' => 'crwdns412:0crwdne412:0', 'password' => 'crwdns413:0crwdne413:0', 'api-token' => 'crwdns414:0crwdne414:0', - 'api-token-help' => 'crwdns415:0crwdne415:0', + 'api-token-help' => 'crwdns436:0crwdne436:0', '2fa' => [ 'help' => 'crwdns416:0crwdne416:0', ], diff --git a/app/lang/en-UD/setup.php b/app/lang/en-UD/setup.php index cae5a09b..9a467f3e 100755 --- a/app/lang/en-UD/setup.php +++ b/app/lang/en-UD/setup.php @@ -10,4 +10,5 @@ return [ 'complete_setup' => 'crwdns264:0crwdne264:0', 'completed' => 'crwdns291:0crwdne291:0', 'finish_setup' => 'crwdns292:0crwdne292:0', + 'allow_tracking' => 'crwdns437:0crwdne437:0', ]; diff --git a/app/lang/pt-BR/cachet.php b/app/lang/pt-BR/cachet.php new file mode 100755 index 00000000..13d1753c --- /dev/null +++ b/app/lang/pt-BR/cachet.php @@ -0,0 +1,59 @@ + [ + 'status' => [ + 1 => 'Operacional', + 2 => 'Problemas de performance', + 3 => 'Indisponibilidade parcial', + 4 => 'Indisponibilidade total', + ], + ], + + // Incidents + 'incidents' => [ + 'none' => 'Nenhum incidente reportado.', + 'past' => 'Incidentes anteriores', + 'previous_week' => 'Semana anterior', + 'next_week' => 'Próxima semana', + 'none' => 'Nenhum incidente reportado.', + 'scheduled' => '', + 'scheduled_at' => '', + 'status' => [ + 0 => '', // TODO: Hopefully remove this. + 1 => 'Investigando', + 2 => 'Identificado', + 3 => 'Observando', + 4 => 'Resolvido', + ], + ], + + // Service Status + 'service' => [ + 'good' => 'Todos os serviços estão operando normalmente.', + 'bad' => 'Alguns serviços estão passando por problemas.', + ], + + 'api' => [ + 'regenerate' => 'Gerar nova chave de API', + 'revoke' => 'Revogar a chave de API', + ], + + // Metrics + 'metrics' => [ + 'filter' => [ + 'hourly' => '', + 'daily' => '', + 'monthly' => '', + ], + ], + + // Other + 'powered_by' => ':app Esta Status Page é fornecida por Cachet.', + 'about_this_site' => 'Sobre este site', + 'rss-feed' => 'RSS Feed', + 'atom-feed' => 'Atom Feed', + 'feed' => 'Status Feed', + +]; diff --git a/app/lang/pt-BR/dashboard.php b/app/lang/pt-BR/dashboard.php new file mode 100755 index 00000000..72447873 --- /dev/null +++ b/app/lang/pt-BR/dashboard.php @@ -0,0 +1,184 @@ + 'Dashboard', + + // Incidents + 'incidents' => [ + 'title' => '', + 'incidents' => 'Incidentes', + 'logged' => '{0} Não existem incidentes, bom trabalho.|Você registrou um incidente.|Você reportou :count incidentes.', + 'incident-create-template' => 'Criar template', + 'incident-templates' => 'Template de incidentes', + 'add' => [ + 'title' => 'Adicionar um incidente', + 'success' => 'Incidente adicionado.', + 'failure' => 'Algo deu errado com o incidente.', + ], + 'edit' => [ + 'title' => 'Editar um incidente', + 'success' => 'Incidente atualizado.', + 'failure' => 'Algo deu errado com o incidente.', + ], + + // Incident templates + 'templates' => [ + 'title' => 'Template de incidentes', + 'add' => [ + 'title' => 'Criar um template de incidente', + 'success' => 'Template criado.', + 'failure' => 'Algo deu errado com o template de incidente.', + ], + 'edit' => [ + 'title' => 'Editar template', + 'success' => 'Template foi atualizado!', + 'failure' => 'Algo deu errado atualizando o template de incidente', + ], + ], + ], + + // Incident Maintenance + 'schedule' => [ + 'schedule' => '', + 'scheduled_at' => '', + 'add' => [ + 'title' => '', + 'success' => '', + 'failure' => '', + ], + 'edit' => [ + 'title' => '', + 'success' => '', + 'failure' => '', + ], + 'delete' => [ + 'success' => '', + 'failure' => '', + ], + ], + + // Components + 'components' => [ + 'components' => 'Componentes', + 'component_statuses' => 'Status do componente', + 'add' => [ + 'title' => 'Adicionar componente', + 'message' => 'Você deve adicionar um componente.', + 'success' => 'Componente criado.', + 'failure' => 'Algo deu errado com o componente.', + ], + 'edit' => [ + 'title' => 'Editar um componente', + 'success' => 'Componente atualizado.', + 'failure' => 'Algo deu errado com o componente.', + ], + + // Component groups + 'groups' => [ + 'groups' => 'Grupo de componente|Grupos de componente', + 'add' => [ + 'title' => 'Adicionar um grupo de componentes', + 'success' => 'Grupo de componente adicionado.', + 'failure' => 'Algo deu errado com o grupo de componente.', + ], + 'edit' => [ + 'title' => '', + 'success' => '', + 'failure' => '', + ], + ], + ], + + // Metrics + 'metrics' => [ + 'metrics' => 'Metricas', + 'add' => [ + 'title' => '', + 'success' => '', + 'failure' => '', + ], + 'edit' => [ + 'title' => '', + 'success' => '', + 'failure' => '', + ], + ], + + // Team + 'team' => [ + 'team' => 'Equipe', + 'member' => 'Membro', + 'profile' => 'Perfil ', + 'description' => 'Membros da equipe serão capazes de adicionar, modificar & editar componentes e incidentes.', + 'add' => [ + 'title' => 'Adicionar um novo membro da equipe', + 'success' => 'Membro da equipe adicionado.', + 'failure' => 'Algo deu errado com o componente.', + ], + 'edit' => [ + 'title' => 'Atualizar perfil', + 'success' => 'Perfil atualizado.', + 'failure' => 'Algo deu errado duante a atualização.', + ], + ], + + // Settings + 'settings' => [ + 'settings' => 'Configurações', + 'app-setup' => [ + 'app-setup' => 'Instalação do aplicativo', + 'images-only' => 'Somente imagens podem ser carregadas.', + 'too-big' => 'O arquivo que você carregou é muito grande. Envie uma imagem inferior à :size', + ], + 'security' => [ + 'security' => 'Segurança', + ], + 'stylesheet' => [ + 'stylesheet' => 'Folha de estilo', + ], + 'theme' => [ + 'theme' => 'Tema', + ], + 'edit' => [ + 'success' => 'Configurações salvas.', + 'failure' => 'Não foi possível salvar as configurações.', + ], + ], + + // Login + 'login' => [ + 'login' => 'Login', + 'logged_in' => 'Você está logado.', + 'welcome' => 'Bem-vindo de volta!', + 'two-factor' => 'Por favor insira o seu token.', + ], + + // Sidebar footer + 'help' => 'Ajuda', + 'status_page' => 'Página de status', + 'logout' => 'Sair', + + // Notifications + 'notifications' => [ + 'notifications' => 'Notificações', + 'awesome' => 'Excelente.', + 'whoops' => 'Opa.', + ], + + // Welcome modal + 'welcome' => [ + 'welcome' => 'Bem-vindo ao Cachet', + 'message' => 'Sua página de status está quase pronta! Tavez vocë queira checar essas configurações extras', + 'close' => 'Basta ir direto para o meu painel de controle', + 'steps' => [ + 'component' => 'Criar componentes', + 'incident' => 'Criar incidentes', + 'customize' => 'Personalizar', + 'team' => 'Adicionar usuários', + 'api' => 'Gerar token de API', + 'two-factor' => '', + ], + ], + +]; diff --git a/app/lang/pt-BR/errors.php b/app/lang/pt-BR/errors.php new file mode 100755 index 00000000..12fd420f --- /dev/null +++ b/app/lang/pt-BR/errors.php @@ -0,0 +1,16 @@ + [ + 'code' => '404', + 'title' => 'Essa página desapareceu!', + 'message' => 'Desculpe, mas a página que você está procurando não foi encontrada. Verifique a URL por erros e tente novamente.', + 'link' => 'Voltar para a página inicial', + ], + 'unauthorized' => [ + 'code' => '401', + 'title' => 'Não autorizado', + 'message' => 'Desculpe, que você precisa de privilégios de administrador para ver esta página.', + 'link' => 'Voltar para a página inicial', + ], +]; diff --git a/app/lang/pt-BR/forms.php b/app/lang/pt-BR/forms.php new file mode 100755 index 00000000..a0d783b5 --- /dev/null +++ b/app/lang/pt-BR/forms.php @@ -0,0 +1,123 @@ + [ + 'email' => 'Email', + 'username' => 'Usuário', + 'password' => 'Senha', + 'site_name' => 'Nome do site', + 'site_domain' => 'Domínio do site', + 'site_timezone' => 'Selecione o seu fuso horário', + 'site_locale' => 'Selecione seu idioma', + 'enable_google2fa' => 'Habilitar a autenticação de dois fatores do Google', + ], + + // Login form fields + 'login' => [ + 'email' => 'Email', + 'password' => 'Senha', + '2fauth' => 'Código de autenticação', + 'invalid' => 'E-mail ou senha inválidos', + 'invalid-token' => 'Token inválido', + ], + + // Incidents form fields + 'incidents' => [ + 'name' => 'Nome', + 'status' => 'Status', + 'component' => 'Componente', + 'message' => 'Mensagem', + 'message-help' => 'Você também pode usar o Markdown.', + 'scheduled_at' => '', + + 'templates' => [ + 'name' => 'Nome', + 'template' => 'Template', + ], + ], + + // Components form fields + 'components' => [ + 'name' => 'Nome', + 'status' => 'Status', + 'group' => 'Grupo', + 'description' => 'Descrição', + 'link' => 'Link', + 'tags' => 'Marcações', + 'tags-help' => 'Separados por vírgulas.', + + 'groups' => [ + 'name' => 'Nome', + ], + ], + + // Metric form fields + 'metrics' => [ + 'name' => '', + 'suffix' => '', + 'description' => '', + 'description-help' => '', + 'display-chart' => '', + 'default-value' => '', + + 'points' => [ + 'value' => '', + ], + ], + + // Settings + 'settings' => [ + /// Application setup + 'app-setup' => [ + 'site-name' => 'Nome do site', + 'site-url' => 'URL do site', + 'site-timezone' => 'Fuso horário do site', + 'site-locale' => 'Idioma do site', + 'date-format' => 'Formato da Data', + 'display-graphs' => '', + 'about-this-page' => 'Sobre esta página', + 'days-of-incidents' => 'Quantos dias de incidentes para mostrar?', + 'banner' => 'Imagem do banner', + 'banner-help' => "É recomendável que você faça upload de arquivos menores que 930px .", + 'google-analytics' => "Código do Google Analytics", + ], + 'security' => [ + 'allowed-domains' => 'Domínios permitidos', + 'allowed-domains-help' => 'Separados por vírgula. O domínio definido acima é permitido automaticamente por padrão.', + ], + 'stylesheet' => [ + 'custom-css' => 'Folha de estilos personalizada', + ], + 'theme' => [ + 'background-color' => 'Cor de fundo', + 'text-color' => 'Cor do Texto', + ], + ], + + 'user' => [ + 'username' => 'Usuário', + 'email' => 'Email', + 'password' => 'Senha', + 'api-token' => 'Token da API', + 'api-token-help' => 'Regenerar a chave da API impedirá que aplicativos existentes acessem o Cachet.', + '2fa' => [ + 'help' => 'Ativando autenticação de dois fatores aumenta a segurança de sua conta. Você vai precisar baixar Google Authenticator ou um app similar em seu dispositivo móvel. Quando você entrar você será solicitado um token gerado pelo app.', + ], + ], + + // Buttons + 'add' => 'Adicionar', + 'save' => 'Salvar', + 'update' => 'Atualizar', + 'create' => 'Criar', + 'edit' => 'Editar', + 'delete' => 'Apagar', + 'submit' => 'Enviar', + 'cancel' => 'Cancelar', + 'remove' => 'Remover', + + // Other + 'optional' => '* Opcional', +]; diff --git a/app/lang/pt-BR/pagination.php b/app/lang/pt-BR/pagination.php new file mode 100755 index 00000000..6a32f34a --- /dev/null +++ b/app/lang/pt-BR/pagination.php @@ -0,0 +1,19 @@ + '« Anterior', + 'next' => 'Próximo »', + +]; diff --git a/app/lang/pt-BR/reminders.php b/app/lang/pt-BR/reminders.php new file mode 100755 index 00000000..da2e71bf --- /dev/null +++ b/app/lang/pt-BR/reminders.php @@ -0,0 +1,22 @@ + 'A senha precisa ter no minimo seis caracteres e tem que ser igual à confirmação.', + 'user' => 'Não foi encontrado nenhum usuário com este endereço de email.', + 'token' => 'Este código de redefinição de senha é inválido.', + 'sent' => 'Lembrete de senha foi enviado!', + 'reset' => 'A senha foi redefinida!', + +]; diff --git a/app/lang/pt-BR/setup.php b/app/lang/pt-BR/setup.php new file mode 100755 index 00000000..f976709e --- /dev/null +++ b/app/lang/pt-BR/setup.php @@ -0,0 +1,14 @@ + 'Configuração', + 'title' => 'Configurar o Cachet', + 'service_details' => 'Detalhes do serviço', + 'status_page_setup' => 'Configuração da página de status', + 'show_support' => 'Mostrar apoio ao Cachet? Coloca um link no rodapé direcionando para Cachet.', + 'admin_account' => 'Conta de administrador', + 'complete_setup' => 'Configuração completa', + 'completed' => 'Cachet foi configurado com sucesso!', + 'finish_setup' => 'Ir para o painel de controle', + 'allow_tracking' => 'Permite rastreamento de uso anônimo?', +]; diff --git a/app/lang/pt-BR/validation.php b/app/lang/pt-BR/validation.php new file mode 100755 index 00000000..61ad493c --- /dev/null +++ b/app/lang/pt-BR/validation.php @@ -0,0 +1,106 @@ + "O campo :attribute deve ser aceito.", + "active_url" => "O campo :attribute não é uma URL válida.", + "after" => "O campo :attribute deverá conter uma data posterior a :date.", + "alpha" => "O campo :attribute deverá conter apenas letras.", + "alpha_dash" => "O campo :attribute só pode conter letras, números, e hifens.", + "alpha_num" => "O campo :attribute só pode conter letras e números.", + "array" => "O campo :attribute deve ser um vetor.", + "before" => "O campo :attribute deverá conter uma data anterior a :date.", + "between" => [ + "numeric" => "O campo :attribute deverá ter um valor entre :min - :max.", + "file" => "O campo :attribute deverá ter um tamanho entre :min - :max kilobytes.", + "string" => "O campo :attribute deverá conter entre :min - :max caracteres.", + "array" => "O campo :attribute deve ter entre :min e :max itens.", + ], + "boolean" => "O campo :attribute deve ser verdadeiro ou falso.", + "confirmed" => "A confirmação para o campo :attribute não coincide.", + "date" => "O :attribute não é uma data válida.", + "date_format" => "O :attribute não corresponde ao formato :format.", + "different" => "O :attribute e :other devem ser diferentes.", + "digits" => "O campo :attribute deverá conter :digits dígitos.", + "digits_between" => "O :attribute deve ter entre :min e :max dígitos.", + "email" => "A: attribute deve ser um endereço de email válido.", + "exists" => "O :attribute selecionado é inválido.", + "image" => "O :attribute deve ser uma imagem.", + "in" => "O :attribute selecionado é inválido.", + "integer" => "O :attribute deve ser um número inteiro.", + "ip" => "O :attribute deve ser um endereço de IP válido.", + "max" => [ + "numeric" => "O :attribute não pode ser maior do que :max.", + "file" => "O campo :attribute não deverá ter um tamanho superior a :max kilobytes.", + "string" => "O :attribute não pode ser maior do que :max caracteres.", + "array" => "A: atributo não pode ter mais de que :max itens.", + ], + "mimes" => "O :attribute deve ser um arquivo do tipo: :values.", + "min" => [ + "numeric" => "O :attribute deve ter pelo menos :min.", + "file" => "O :attribute deve ter pelo menos :min kilobytes.", + "string" => "O :attribute deve ter pelo menos :min caracteres.", + "array" => "O :attribute deve ter pelo menos :min itens.", + ], + "not_in" => "O :attribute selecionado é inválido.", + "numeric" => "O :attribute deve ser um número.", + "regex" => "O formato de :attribute é inválido.", + "required" => "O campo de :attribute é obrigatório.", + "required_if" => "O campo de :attribute é obrigatório quando :other é :value.", + "required_with" => "O campo :attribute é obrigatório quando :values está presente.", + "required_with_all" => "O campo :attribute é obrigatório quando :values está presente.", + "required_without" => "O campo de :attribute é obrigatório quando :values não está presente.", + "required_without_all" => "O campo de :attribute é obrigatório quando qualquer um dos :values estão presentes.", + "same" => "O :attribute e :other devem corresponder.", + "size" => [ + "numeric" => "O :attribute deve ser :size.", + "file" => "O :attribute deve ter :size kilobytes.", + "string" => "O :attribute deve ter :size caracteres.", + "array" => "O :attribute deve ter :size itens.", + ], + "unique" => "O :attribute já existe.", + "url" => "O formato de :attribute é inválido.", + "timezone" => "O :attribute deve ser uma zona válida.", + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'Mensagem-personalizada', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +];