TransMaintain es una herramienta para mantener la coherencia de los archivos de traducciĂłn de la interfaz del proyecto Symfony

"El dolor es dolor, como sea que lo llames.

Esto es miedo, donde hay miedo, no hay lugar para el amor".

Agatha Christie





Cuántos proyectos no han pasado por mis manos, siempre los mismos, los archivos de traducción están en un estado terrible. Este problema se expresa mejor con las palabras de Agatha Christie al comienzo del artículo. Los matices lingüísticos y la calidad de las traducciones no se entenderán aquí. Supongamos que tenemos excelentes traducciones. Bajo el corte se resuelven aquellos problemas que se pueden controlar por medios técnicos y las herramientas diseñadas para ello. El material está destinado a personas con experiencia con Symfony y, en general, con la consola Linux. También se supone que sabe cómo conectar paquetes de terceros al proyecto. Por tanto, algunas de las cuestiones no se abordan desde el punto de vista de "todo está claro".






De todos los problemas asociados con las traducciones, existen aquellos que son muy difíciles de controlar por medios técnicos. Por ejemplo, la calidad de las traducciones, su significado semántico y la conveniencia de usar ciertas palabras en una parte particular de la interfaz de usuario. Y hay aquellos que técnicamente son bastante fáciles de controlar. De la última categoría, que solemos encontrar en proyectos, podemos destacar:





  1. Falta de algunas traducciones. Incluso si se agregan traducciones para uno o dos idiomas, no se agregan para el resto.





  2. No se agregaron traducciones en absoluto.





  3. El uso de espinas similares, pero diferentes, para las mismas traducciones.





  4. Diferentes traducciones para las mismas llaves (llaves duplicadas). Como resultado, obtenemos que la traducción requerida está disponible, pero no se muestra lo que esperamos.





Pero esta es una manifestaciĂłn externa del problema. Cual es su 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