"Schmerz ist Schmerz, wie auch immer du es nennst.
Dies ist Angst, wo Angst ist, gibt es keinen Platz für Liebe."
Agatha Christie
Wie viele Projekte sind mir nicht durch die Hände gegangen - immer gleich - die Übersetzungsdateien sind in einem schrecklichen Zustand. Dieses Problem wird am besten durch die Worte von Agatha Christie am Anfang des Artikels ausgedrückt. Die sprachlichen Nuancen und die Qualität der Übersetzungen werden hier nicht verstanden. Angenommen, wir haben ausgezeichnete Übersetzungen. Unter dem Schnitt werden die Probleme, die mit technischen Mitteln kontrolliert werden können, und die dafür vorgesehenen Werkzeuge aussortiert. Das Material richtet sich an Personen mit Erfahrung mit Symfony und allgemein mit der Linux-Konsole. Es wird auch davon ausgegangen, dass Sie wissen, wie Bundles von Drittanbietern mit dem Projekt verbunden werden. Daher werden einige der Fragen nicht vom Standpunkt "Alles ist klar" behandelt.
Von allen Problemen, die mit Übersetzungen verbunden sind, gibt es solche, die mit technischen Mitteln nur sehr schwer zu kontrollieren sind. Zum Beispiel die Qualität von Übersetzungen, ihre semantische Bedeutung und die Angemessenheit der Verwendung bestimmter Wörter in einem bestimmten Teil der Benutzeroberfläche. Und es gibt solche, die technisch recht einfach zu kontrollieren sind. Aus der letzten Kategorie, auf die wir normalerweise bei Projekten stoßen, können wir Folgendes herausgreifen:
Fehlen einiger Übersetzungen. Selbst wenn Übersetzungen für eine oder zwei Sprachen hinzugefügt werden, werden sie für den Rest nicht hinzugefügt.
Es wurden überhaupt keine Übersetzungen hinzugefügt.
Die Verwendung ähnlicher, aber dennoch unterschiedlicher Dornen für die gleichen Übersetzungen.
Unterschiedliche Übersetzungen für dieselben Schlüssel (doppelte Schlüssel). Als Ergebnis erhalten wir, dass die erforderliche Übersetzung verfügbar ist, aber nicht das, was wir erwarten, angezeigt wird.
Dies ist jedoch eine äußere Manifestation des Problems. Was ist ihre Basis?
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 . .
. .