Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Como o Spatie lida com traduções quando os arquivos de banco de dados e idioma são usados


Como o Spatie lida com traduções quando os arquivos de banco de dados e idioma são usados


A Spatie lida com traduções com os arquivos de banco de dados e idioma principalmente por meio de seu pacote de carregador de translação de Laravellavel, que se integra perfeitamente ao sistema de tradução nativo de Laravel.

como funciona ao usar o banco de dados e os arquivos de idioma

- O pacote permite armazenar traduções no banco de dados usando uma tabela dedicada (`idioma_lines`). Cada entrada de tradução é representada por uma instância do modelo `LinguageLine ', que inclui:
- `Grupo`: o grupo de tradução (por exemplo," validação "ou" auth ").
- `key`: a chave de tradução dentro do grupo.
- `text`: uma matriz mantendo traduções para diferentes locais (por exemplo,` ['en' => 'este é um campo necessário', 'nl' => 'dit é een verplicht veld'] `).

- Quando você solicita uma tradução usando funções de tradução usuais de Laravel como `trans ()` ou `__ ()`, o pacote primeiro verifica o banco de dados para a tradução. Se encontrar uma entrada correspondente, ele retornará a versão do banco de dados.

- Se a tradução não for encontrada no banco de dados, ele voltará aos arquivos de idiomas tradicionais armazenados no diretório Recursos/Lang` da Laravel.

- Isso significa que as traduções do banco de dados substituem as traduções do arquivo de idiomas se existem para a mesma chave e localidade.

- O pacote suporta traduções baseadas em grupo (por exemplo, `validation.required`) e traduções JSON usando um nome de grupo especial` '*' `para linhas de tradução JSON.

Recursos e comportamento adicionais

- O pacote cache grupos de traduções para otimizar o desempenho, reduzindo as consultas de banco de dados em solicitações de tradução repetidas. O cache é invalidado quando as traduções são criadas, atualizadas ou excluídas.

- É extensível: você pode adicionar provedores de tradução personalizados (por exemplo, YAML, CSV) implementando a interface do pacote de tradução do pacote, permitindo que as traduções sejam carregadas de outras fontes além dos arquivos de banco de dados e idioma.

- Você pode continuar usando os ajudantes de tradução padrão do Laravel e as diretivas de lâmina (`@lang`,` trans () `,` __ () `) sem modificação.

Resumo

O pacote de carregadores de tradução da Spatie mescla efetivamente as traduções armazenadas no banco de dados com as traduções baseadas em arquivos nativas de Laravel, priorizando as entradas do banco de dados. Isso permite a edição dinâmica de traduções por meio de uma interface do banco de dados, mantendo o fallback dos arquivos de linguagem estática. A integração é suave, exigindo alterações mínimas nas chamadas de tradução existentes e oferece cache e extensibilidade para casos de uso avançado [1] [3] [5] [6] [7].

Citações:
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-translatable
[5] https://www.laravelblogs.com/courses/multi-language-laravel/spatie-laravel-translation-loader
[6] https://packagist.org/packages/spatie/laravel-translation-loader
[7] https://freek.dev/593-a-laravel-package-to store-language lines-in-the-database
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translatable