Download the PHP package gsferro/translation-solution-easy without Composer
On this page you can find all versions of the php package gsferro/translation-solution-easy. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download gsferro/translation-solution-easy
More information about gsferro/translation-solution-easy
Files in gsferro/translation-solution-easy
Package translation-solution-easy
Short Description A complete solution for simple and efficient i18n for Laravel
License MIT
Informations about the package translation-solution-easy
Laravel Translation Solution Easy
Uma solução robusta e fácil para i18n que contempla as 3 etapas básicas:
-
Tradução de termos (strings) fixos (views e controllers)
-
Crie o arquivo
resources/lang/pt-br.json
e coloque os termos fixos, que são usados em todos os lugares, como:- titulos das paginas
- breadcumb
- menu
- label ou _coluna de tabela
- frases / textos
-
Escreva-os como forem ser usados em pt-br:
- ex:
- Para executar, utilize normalmente o método padrão do laravel:
- ex:
-
Crie os arquivos em
resources/lang/pt-br/<arquivo>.php
somente quando o valor for sofrer alteração conforme utilização, faça parte de um componente ou for explícito alguma tradução em especial.- ex:
- Observações relevantes:
-
Acaba sendo inicialmente trabalhoso encapsular todos os textos/termos e incrementar o arquivo json quando o projeto já está em curso
-
Ficará muito mais fácil quando o projeto nasce com essa filosofia
-
Reforce o princípio dentro do time de que em qualquer alteração, encapsular os textos/termos
-
Não utilize espaço no nome do index dentro dos arquivos php, use o separador
_
ou-
-
ATENÇÃO: não utilize array bidimensional, a exceção é o validation.php
-
- Para traduzir os arquivos, veja a sessão Tradução dos arquivos de langs usando command como é feito para o banco de dados
-
-
Gerenciamento do Langs
- Veja a sessão: Configurações de uso item 1, 2 e 5
- O locale ficará como prefixo na url, porém a langs padrão (pt-br), não é exibido
- A gerência é feita de forma automática pelo pacote, você só precisa incluir na view
@translationsolutioneasyFlags()
para o usuário fazer a troca - O pacote também verifica o browser do usuário para ajudar a setar o locate
- Ao fazer chamadas para alguma api que venha a ser feita, colocar no header do http
"accept-language" => "pt-BR,pt;q=0.8",
- O pacote olha primeiro para a base de dados e depois para o arquivo seguindo o padrão Iterator, nas próximas versões inverteremos, mas nada que irá modificar o seu uso.
-
Tradução do banco de dados
-
Caso queira utilizar o Sqlite veja a sessão Use SQLite, no link é visto como configurar de forma simples com alguns passos rodando:
- Na Sessão Tradução do Banco de Dados, é explicado como configurar o pacote para traduzir um ou múltiplas tabelas e colunas no arquivo
config/translationsolutioneasy
:
-
-
TODO
-
Traduzir automaticamente informações digitadas pelos usuários?
- se sim, usar Observer ou listener?
- Ao traduzir automaticamente, ter a opção de uma verificação interna (PF / time) e/ou dos usuários do sistema poderem sugerir melhores traduções.
-
Dependências:
- https://github.com/spatie/laravel-translation-loader/tree/2.6.3
- https://github.com/mcamara/laravel-localization/
Versões
Package | Laravel |
---|---|
~1.* | 5.8 |
Instalação
- Faz
mergeConfigFrom
no ServiceProvider colocando o locale deapp.php
comopt-br
-
TODO trocar configuração via command
Configurações de uso
-
No arquivo base de html deve ser colocado:
-
Para o fácil encapsulamento e visando os testes automatizados:
-
Crie o arquivo
routes/withLacale.php
-
Altere
RouteServiceProvider@mapWebRoutes
- Para mais detalhes, veja a sessão Informações adicionais
-
-
Caso não opte por Use SQLite, execute no terminal:
- Caso use uma outra conexão:
-
Acesse
config/laravellocalization
e sete quais linguas a sua aplicação irá dar suporte- default:
pt-br
en
- default:
- Inclua a seleção para troca de idiomas
@translationsolutioneasyFlags()
- Ele precisa estar encapsulado pela tag
<ul>
- Talvez seja necessário ajustar o
public/vendor/gsferro/translationsolutioneasy/css/flags.css
dependendo de onde for colocado
Use SQLite
- Command para criar database
-
Faz
mergeConfigFrom
no ServiceProvider mesclando a nova config emconfig/database
econfig/translationsolutioneasy
- Migrate
- Caso queria deixar de usar o SQLite para usar outro SGBD, excluir arquivos de
vendor/gsferro/translation-solution-easy/config/sqlite
-
TODO remover configuração via command
Tradução dos Arquivos
- Execute o comando via artisan, passe os paramentros caso queira rodar somente em um único arquivo ou lang
Tradução do Banco de Dados
-
Coloque em
config/translationsolutioneasy.translate-tables
as tabelas com o(s) campo(s) que deseja traduzir:-
ex:
- Obs: Coloque somente as colunas que fazem sentido serem traduzidas. Colunas contendo datas e numero não fazem.
-
-
Nas Models:
- Coloque a interface
TranslationColumnsInterface
- Coloque a Trait
TranslationColumnsTrait
- Caso não tenha configurado o item 1 (inline), sete o atributo
public $translationColumns = ["<name-column1>", ...]
- Coloque a interface
- Execute o comando via artisan, passe os paramentos caso queira rodar somente numa única tabela/coluna (inline)
TODO
- Ter a opção de passar a model e pegar as informações direto dela, assim é viável fazer traduções em multiplas conexões de banco de dados.
Informações Adicionais / Importantes
-
Atenções ao escolher o SGBD que for usado para a tradução, dependendo da escolha será necessário alterar o migrate gerado ao publicar este pacote:
sqlite
:- Tem uma limitação de tamanho de
varchar
(string no migrate) de 500 caracteres usado no campokey
; sql server
:- Não recomenda que seja usado o campo do tipo
text
, pois em alguma versão ele sera descontinuado, o limite atual do varchar é 8k; - o campo
key
esta como string, ou seja, pela configuração do laravel, tera o length de 191, conforme o seu projeto, talvez seja necessário aumentar;
- Option
--force
:- Add na v1.3.0, por default é false, ou seja, só ira buscar uma tradução caso não exista para a lingua escolhida, diminuindo substancialmente o tempo;
- Caso coloque como true, executara para todos, pode demorar horas dependendo do tamanho do arquivo ou tabela.
- O limite para cada tradução é de 3k caracteres
- Testing:
- Cache das rotas:
- Post not work:
- Traduzir rotas:
Credits
License
Laravel Localization is an open-sourced laravel package licensed under the MIT license