TransMaintain é uma ferramenta para manter os arquivos de tradução da interface do projeto symfony consistentes

"Dor Ă© dor, como vocĂȘ quiser.

Isso Ă© medo, onde hĂĄ medo, nĂŁo hĂĄ lugar para o amor."

Agatha Christie





Quantos projetos nĂŁo passaram pelas minhas mĂŁos - sempre iguais - os arquivos de tradução estĂŁo em pĂ©ssimo estado. Este problema Ă© melhor expresso pelas palavras de Agatha Christie no inĂ­cio do artigo. As nuances linguĂ­sticas e a qualidade das traduçÔes nĂŁo serĂŁo compreendidas aqui. Suponha que temos traduçÔes excelentes. Sob o corte, aqueles problemas que podem ser controlados por meios tĂ©cnicos e as ferramentas projetadas para isso sĂŁo resolvidos. O material Ă© destinado a pessoas com experiĂȘncia com Symfony e em geral com o console Linux. TambĂ©m presume-se que vocĂȘ saiba como conectar pacotes configurĂĄveis ​​de terceiros ao projeto. Portanto, algumas das questĂ”es nĂŁo sĂŁo tratadas do ponto de vista de "tudo estĂĄ claro.






De todos os problemas associados Ă s traduçÔes, existem aqueles que sĂŁo muito difĂ­ceis de controlar por meios tĂ©cnicos. Por exemplo, a qualidade das traduçÔes, seu significado semĂąntico e a adequação do uso de certas palavras em uma parte especĂ­fica da interface do usuĂĄrio. E hĂĄ aqueles que sĂŁo tecnicamente muito fĂĄceis de controlar. Da Ășltima categoria, que normalmente encontramos em projetos, podemos destacar:





  1. Falta de algumas traduçÔes. Mesmo se traduçÔes para um ou dois idiomas forem adicionadas, elas não serão adicionadas para o resto.





  2. Nenhuma tradução adicionada.





  3. O uso de espinhos semelhantes, mas, no entanto, diferentes para as mesmas traduçÔes.





  4. TraduçÔes diferentes para as mesmas chaves (chaves duplicadas). Como resultado, descobrimos que a tradução necessåria estå disponível, mas não o que esperamos que seja exibido.





Mas esta é uma manifestação externa do problema. Qual é a sua base?





3 :





  1. . ? . . . . .





  2. : . , , . . .





  3. ? . . PHPUnit. , CI ? - , .





. , 100500 . , “symfony/translation”. , , . , , .





. , . Github-. Symfony 4.4+ . .





, , — “” . , YAML . . — . . , . :





  1. . , , - , .





  2. .





. ( ) . , .





:





aeliot_trans_maintain:yaml:transform PATH_TO_FILE_IN PATH_TO_FILE_OUT
      
      



Symfony. , PATH_TO_FILE_OUT PATH_TO_FILE_IN. . Linux find grep . , YAML :





find PATH_TO_DIRECTORY -type f \( -iname \*.yml -o -iname \*.yaml \) | sort | xargs  -I {} -t  php  bin/console aeliot_trans_maintain:yaml:transform $1{}
      
      



,

. — , Google Translate. , . . .





:





bin/console aeliot_trans_maintain:yaml:export_missed_translations DOMAIN DONOR_LOCALE FILTER_BY_LOCALE
      
      



:





  • DOMAIN — . 





  • DONOR_LOCALE —  





  • FILTER_BY_LOCALE — . , , . , .





. StdOut. . :





bin/console a:y:e messages en de > ./donor.txt
      
      



- , Symfony . .





PhpStorm . . , , .





! . YAML Symfony (\Symfony\Component\Yaml\Yaml::dump()), . , . .





, — . ( : insert_missed_keys). , , , .





:





  • no — . .





  • end —





  • merge — . .





: no end. dev , .. . - , - .





:





parameters:
   env(TRANS_MAINTAIN_INSERT_MISSED_KEYS): no

aeliot_trans_maintain:
   insert_missed_keys: "%env(TRANS_MAINTAIN_INSERT_MISSED_KEYS)%"
      
      



/ TRANS_MAINTAIN_INSERT_MISSED_KEYS .env .env.local - .





. . . . 
 . ? ?





:





aeliot_trans_maintain:lint:yaml KEY_1 KEY_2 KEY_N
      
      



0 1 . StdOut . . .





:





  • base — ().





  • all — . . , base , all .





:





  • files_missed — , . , . , .





  • keys_missed — , . , ( ) , . , , .





  • keys_duplicated — . , , .





base. , .





CI . , - , .





.

:





  1. . , .





  2. .





  3. API Google/Yandex . .





. .








All Articles