system_language 0.3.1 copy "system_language: ^0.3.1" to clipboard
system_language: ^0.3.1 copied to clipboard

Sistema manipulador de linguagem.

SystemLanguage #

Gerenciador de idiomas utilizando o padrão Singleton para armazenar e recuperar textos através de objetos Book.


Versão #

Essa versão é a: 0.3.1


Objetivo #

A classe SystemLanguage centraliza o controle de idiomas da aplicação, permitindo:

  • Definir o idioma atual.
  • Armazenar livros (Book) por idioma.
  • Recuperar textos por índice.
  • Adicionar novos textos.
  • Registrar novos idiomas dinamicamente.

Estrutura da Classe #

class SystemLanguage {
  String lng = 'pt-br';
  Map<String, Book> books = <String, Book>{};
  static final SystemLanguage _instance = SystemLanguage._();

  // construtor privado
  SystemLanguage._();

  // contrutor
  factory SystemLanguage() {
    return _instance;
  }

  // construtor nomeado
  SystemLanguage.books(Book book, String language) {
    lng = language;
    books = {lng: book};
  }

  // Devolve o texto para o indice.
  String out(String index) {
    return books[lng]!.out(index);
  }

  // Inclue texto no mapa como o indice.
  bool add({required String index, required String text}) {
    return books[lng]!.add(index, text);
  }

  // Adiciona livro ao mapa
  bool addBook(Book book, String language) {
    lng = language;
    books = {lng: book};
    return true;
  }
}

Padrão Singleton #

A classe utiliza o padrão Singleton, garantindo apenas uma instância global durante toda a execução da aplicação.

Exemplo #

final language = SystemLanguage();

Todas as chamadas retornarão a mesma instância.


Propriedades #

Propriedade Tipo Descrição
lng String Idioma atualmente selecionado
books Map<String, Book> Mapa contendo os livros por idioma
_instance SystemLanguage Instância singleton da classe

Construtores #

Construtor Privado #

SystemLanguage._();

Impede a criação direta da classe.


Factory Constructor #

factory SystemLanguage()

Retorna a instância singleton da classe.


Construtor Nomeado #

SystemLanguage.books(Book book, String language)

Inicializa o sistema já contendo um livro associado a um idioma.

Exemplo #

final lang = SystemLanguage.books(bookPt, 'pt-br');

Métodos #


out() #

Retorna um texto utilizando o índice informado.

Sintaxe #

String out(String index)

Parâmetros #

Nome Tipo Descrição
index String Índice do texto desejado

Exemplo #

String text = language.out('welcome');

add() #

Adiciona temporariamente um novo texto ao idioma atual.

Sintaxe #

bool add({
  required String index,
  required String text
})

Parâmetros #

Nome Tipo Descrição
index String Chave identificadora do texto
text String Texto que será armazenado

Exemplo #

language.add(
  index: 'hello',
  text: 'Olá Mundo'
);

addBook() #

Adiciona um novo livro ao sistema e altera o idioma atual.

Sintaxe #

bool addBook(Book book, String language)

Parâmetros #

Nome Tipo Descrição
book Book Livro contendo os textos
language String Código do idioma

Exemplo #

language.addBook(bookEn, 'en-us');

Exemplo Completo #

void main() {

  Book ptBook = Book();
  ptBook.add('hello', 'Olá');

  Book enBook = Book();
  enBook.add('hello', 'Hello');

  final language = SystemLanguage.books(
    ptBook,
    'pt-br'
  );

  print(language.out('hello'));
  // Olá

  language.addBook(enBook, 'en-us');

  print(language.out('hello'));
  // Hello
}

Estrutura Esperada da Classe Book #

A classe Book deve implementar os métodos abaixo:

class Book {

  bool add(String index, String text) {
    // implementação
  }

  String out(String index) {
    // implementação
  }
}

Observações Importantes #

Troca de Idioma #

O método addBook() altera automaticamente o idioma atual:

lng = language;

Substituição do Mapa #

Ao adicionar um novo livro:

books = {lng: book};

O mapa anterior é substituído completamente.

Exemplo #

Se já existirem outros idiomas registrados, eles serão removidos.


📄 Licença #

A Licença Apache 2.0 é uma licença de software de código aberto permissiva e popular. Ela permite o uso, modificação, distribuição e comercialização do software, inclusive em projetos fechados, desde que mantenha os créditos de autoria, inclua uma cópia da licença e relate as alterações feitas.


0
likes
130
points
7
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Sistema manipulador de linguagem.

Repository (GitHub)
View/report issues

License

Apache-2.0 (license)

Dependencies

flutter

More

Packages that depend on system_language