"La douleur est la douleur, peu importe comment vous l'appelez.
C'est la peur, lĂ oĂą il y a la peur, il n'y a pas de place pour l'amour."
Agatha Christie
Combien de projets ne sont pas passés entre mes mains - toujours les mêmes - les fichiers de traduction sont dans un état terrible. Ce problème est mieux exprimé par les paroles d'Agatha Christie au début de l'article. Les nuances linguistiques et la qualité des traductions ne seront pas comprises ici. Supposons que nous ayons d'excellentes traductions. Sous la coupe, les problèmes qui peuvent être contrôlés par des moyens techniques et les outils conçus à cet effet sont réglés. Le matériel est destiné aux personnes ayant de l'expérience avec Symfony et en général avec la console Linux. Il est également supposé que vous savez comment connecter des bundles tiers au projet. Par conséquent, certaines des questions ne sont pas traitées du point de vue du "tout est clair.
De tous les problèmes liés aux traductions, il y a ceux qui sont très difficiles à contrôler par des moyens techniques. Par exemple, la qualité des traductions, leur signification sémantique et l'opportunité d'utiliser certains mots dans une partie particulière de l'interface utilisateur. Et il y a ceux qui sont techniquement assez faciles à contrôler. Dans la dernière catégorie, que l'on rencontre habituellement sur les projets, on peut distinguer:
Manque de traductions. Même si des traductions pour une ou deux langues sont ajoutées, elles ne sont pas ajoutées pour le reste.
Aucune traduction ajoutée du tout.
L'utilisation d'épines similaires mais néanmoins différentes pour les mêmes traductions.
Différentes traductions pour les mêmes clés (clés en double). En conséquence, nous obtenons que la traduction requise est disponible, mais que ce que nous attendons ne s'affiche pas.
Mais c'est une manifestation extérieure du problème. Quelle est sa base?
3 :
. ? . . . . .
: . , , . . .
? . . PHPUnit. , CI ? - , .
. , 100500 . , “symfony/translation”. , , . , , .
. , . Github-. Symfony 4.4+ . .
, , — “” . , YAML . . — . . , . :
. , , - , .
.
. ( ) . , .
:
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 . , - , .
.
:
. , .
.
API Google/Yandex . .
. .