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
);