TransMaintain adalah alat untuk menjaga konsistensi file terjemahan antarmuka proyek symfony

"Sakit adalah rasa sakit, apa pun sebutannya.

Ini adalah ketakutan, di mana ada rasa takut, tidak ada tempat untuk cinta."

Agatha Christie





Berapa banyak proyek yang belum melalui tangan saya - selalu sama - file terjemahan berada dalam kondisi yang buruk. Masalah ini paling baik diungkapkan oleh kata-kata Agatha Christie di awal artikel. Nuansa bahasa dan kualitas terjemahan tidak akan dipahami di sini. Misalkan kita memiliki terjemahan yang sangat baik. Di bawah pemotongan, masalah-masalah yang dapat dikendalikan dengan cara teknis dan alat yang dirancang untuk ini diselesaikan. Materi ini ditujukan untuk orang-orang yang berpengalaman dengan Symfony dan secara umum dengan konsol Linux. Diasumsikan juga bahwa Anda tahu cara menghubungkan bundel pihak ketiga ke proyek. Oleh karena itu, beberapa pertanyaan tidak ditangani dari sudut pandang "semuanya jelas.






Dari semua masalah yang terkait dengan terjemahan, ada yang sangat sulit dikendalikan secara teknis. Misalnya, kualitas terjemahan, makna semantiknya, dan kesesuaian penggunaan kata-kata tertentu di bagian antarmuka pengguna tertentu. Dan ada yang secara teknis cukup mudah dikendalikan. Dari kategori terakhir, yang biasanya kami temui di proyek, kami dapat memilih:





  1. Kurangnya beberapa terjemahan. Meskipun terjemahan untuk satu atau dua bahasa ditambahkan, mereka tidak ditambahkan untuk yang lainnya.





  2. Tidak ada terjemahan yang ditambahkan sama sekali.





  3. Penggunaan yang serupa, namun berbeda, duri untuk terjemahan yang sama.





  4. Terjemahan berbeda untuk kunci yang sama (kunci duplikat). Hasilnya, kami mendapatkan bahwa terjemahan yang diperlukan tersedia, tetapi tidak seperti yang kami harapkan ditampilkan.





Tapi ini adalah manifestasi lahiriah dari masalah tersebut. Apa dasarnya?





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