Skip to main content

i18n

A lib vem com ~80 strings (validators, botões, dialogs, erros HTTP, login, settings, sync banner) em pt-BR. Inglês incluído como referência. Outras locales: você implementa.

Override global

import 'package:archbase_flutter/archbase_flutter.dart';

void main() {
// No bootstrap, antes do runApp:
ArchbaseLocalizations.set(const ArchbaseLocalizationsEnUs());
runApp(...);
}

Daí pra frente, validators e widgets que leem do bundle ativo retornam mensagens em inglês.

Override por subárvore

Para misturar locales (ex.: app principal em pt-BR mas uma seção em EN):

ArchbaseLocalizationsScope(
bundle: const ArchbaseLocalizationsEnUs(),
child: MeuSubapp(),
)

Widgets dentro dessa subárvore resolvem ArchbaseLocalizations.of(context) para a English bundle.

Criar uma locale custom

Estenda ArchbaseLocalizations e implemente os ~80 getters. Use o ArchbaseLocalizationsPtBr como referência:

class ArchbaseLocalizationsEsAr extends ArchbaseLocalizations {
const ArchbaseLocalizationsEsAr();


String get fieldRequired => 'Campo requerido';

String get emailInvalid => 'Email inválido';
// ... ~80 outros
}

// Bootstrap:
ArchbaseLocalizations.set(const ArchbaseLocalizationsEsAr());

Como os validators leem o bundle

Todos os validators e o ArchbaseErrorInterceptor consultam ArchbaseLocalizations.current (override global). Se quiser passar uma mensagem custom em um lugar específico, todos aceitam o parâmetro message:

ArchbaseValidators.cpf(
value,
message: 'CPF do contratante inválido', // sobrescreve a mensagem do bundle
);