"Dor Ă© dor, como vocĂȘ quiser.
Isso Ă© medo, onde hĂĄ medo, nĂŁo hĂĄ lugar para o amor."
Agatha Christie
Quantos projetos nĂŁo passaram pelas minhas mĂŁos - sempre iguais - os arquivos de tradução estĂŁo em pĂ©ssimo estado. Este problema Ă© melhor expresso pelas palavras de Agatha Christie no inĂcio do artigo. As nuances linguĂsticas e a qualidade das traduçÔes nĂŁo serĂŁo compreendidas aqui. Suponha que temos traduçÔes excelentes. Sob o corte, aqueles problemas que podem ser controlados por meios tĂ©cnicos e as ferramentas projetadas para isso sĂŁo resolvidos. O material Ă© destinado a pessoas com experiĂȘncia com Symfony e em geral com o console Linux. TambĂ©m presume-se que vocĂȘ saiba como conectar pacotes configurĂĄveis ââde terceiros ao projeto. Portanto, algumas das questĂ”es nĂŁo sĂŁo tratadas do ponto de vista de "tudo estĂĄ claro.
De todos os problemas associados Ă s traduçÔes, existem aqueles que sĂŁo muito difĂceis de controlar por meios tĂ©cnicos. Por exemplo, a qualidade das traduçÔes, seu significado semĂąntico e a adequação do uso de certas palavras em uma parte especĂfica da interface do usuĂĄrio. E hĂĄ aqueles que sĂŁo tecnicamente muito fĂĄceis de controlar. Da Ășltima categoria, que normalmente encontramos em projetos, podemos destacar:
Falta de algumas traduçÔes. Mesmo se traduçÔes para um ou dois idiomas forem adicionadas, elas não serão adicionadas para o resto.
Nenhuma tradução adicionada.
O uso de espinhos semelhantes, mas, no entanto, diferentes para as mesmas traduçÔes.
TraduçÔes diferentes para as mesmas chaves (chaves duplicadas). Como resultado, descobrimos que a tradução necessĂĄria estĂĄ disponĂvel, mas nĂŁo o que esperamos que seja exibido.
Mas esta é uma manifestação externa do problema. Qual é a sua 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 . .
. .