TransMaintainは、symfonyプロジェクトのインターフェース翻訳ファイルの一貫性を保つためのツールです。

「痛み、あなたがそれを何と呼んでも、痛みです

これは恐れであり、恐れがあるところには、愛する場所がありません。」

アガサ・クリスティ





どれだけのプロジェクトが私の手に渡っていませんか-常に同じです-翻訳ファイルはひどい状態にあります。この問題は、記事の冒頭にあるアガサ・クリスティの言葉で最もよく表現されています。言語的なニュアンスと翻訳の質はここでは理解されません。優れた翻訳があるとします。カットの下で、技術的手段によって制御できる問題とそのために設計されたツールが整理されます。この資料は、Symfonyおよび一般的にLinuxコンソールの経験がある人を対象としています。また、サードパーティのバンドルをプロジェクトに接続する方法を知っていることも前提としています。したがって、「すべてが明確である」という観点から、いくつかの質問は扱われていません。






翻訳に関連するすべての問題の中には、技術的な手段で制御するのが非常に難しい問題があります。たとえば、翻訳の品質、それらの意味的意味、およびユーザーインターフェイスの特定の部分で特定の単語を使用することの適切性。そして、技術的に非常に制御しやすいものがあります。プロジェクトで通常遭遇する最後のカテゴリから、次のものを選び出すことができます。





  1. いくつかの翻訳の欠如。1つまたは2つの言語の翻訳が追加されても、それ以外の言語は追加されません。





  2. 翻訳はまったく追加されていません。





  3. 同じ翻訳に対して、類似しているが異なるとげを使用する。





  4. 同じキー(重複キー)の異なる翻訳。その結果、必要な翻訳は利用可能ですが、期待どおりの翻訳は表示されません。





しかし、これは問題の外見上の現れです。その根拠は何ですか?





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