Estou desenvolvendo um aplicativo Web PHP multilíngue e tenho textos longos (-ish) que preciso traduzir com gettext. Esses são modelos de email (geralmente curtos, mas ainda com várias linhas) e partes de modelos de exibição (blocos de texto descritivos mais longos). Esses textos incluiriam algum HTML simples (coisas como negrito / itálico para ênfase, provavelmente um link aqui ou ali). Os modelos são scripts PHP cuja saída é capturada.
O problema é que o gettext parece muito desajeitado para lidar com textos mais longos. Os textos mais longos geralmente apresentam mais alterações ao longo do tempo do que os textos curtos - eu posso alterar o msgid e atualizá-lo em todas as traduções (pode ser muito trabalhoso e muito propenso a erros quando o msgid for longo), ou posso continuar o msgid inalterado e modifica apenas as traduções (o que deixaria textos desatualizados enganosos nos modelos). Além disso, vi conselhos contra a inclusão de HTML em seqüências de caracteres gettext, mas evitá-lo dividiria um único pedaço de texto natural em vários pedaços, o que será um pesadelo ainda maior para traduzir e remontar, e também vi conselhos contra divisão desnecessária de seqüências de caracteres gettext em msgids separados.
A outra abordagem que eu vejo é ignorar completamente o gettext para esses textos mais longos, e separar esses blocos em sub-modelos externos para cada localidade e apenas incluir o da localidade atual. A desvantagem é que estou separando o esforço de tradução entre os arquivos gettext .po e os modelos separados localizados em um local completamente diferente.
Como esse aplicativo será usado como ponto de partida para outros aplicativos no futuro, estou tentando encontrar a melhor abordagem para o longo prazo. Preciso de alguns conselhos para as melhores práticas em tais cenários. Como você implementou casos semelhantes? O que acabou funcionando e o que acabou sendo uma péssima idéia?
Respostas:
Me deparei com um problema semelhante há pouco tempo (consulte /programming/8288050/can-i-automatically-update-msgids-in-gettexts-po-files-for-trivial-text-change ).
Basicamente, existem duas opções:
msgmerge
A correspondência imprecisa de, no entanto, geralmente ainda coincide com o texto original correto para a tradução antiga, portanto, normalmente, a tradução antiga estará disponível para o tradutor.fonte
Isso é algo que você pode automatizar facilmente, tornando-o menos propenso a erros e também menos trabalho.
fonte