Traduzindo textos mais longos (exibição e modelos de email) com gettext

9

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?

lanzz
fonte

Respostas:

3

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:

  1. Faça da maneira que o gettext deve ser usado: Use os textos originais como msgid, HTML e tudo. Todas as alterações no texto original invalidarão todas as traduções. msgmergeA 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.
  2. No caso de usar o texto original como msgid, use algum identificador sintético (como EMAIL_TEMPLATE_NEWSLETTER_START). Dessa forma, os IDs nunca mudam. Os textos originais (provavelmente em inglês) serão simplesmente outra tradução para o gettext. Principais desvantagens: 1) Você deve acompanhar separadamente quais traduções estão atualizadas; 2) Algumas ferramentas de gettext podem não lidar bem com isso (os tradutores podem precisar de ferramentas especiais).
sleske
fonte
1

altere o msgid e certifique-se de atualizá-lo em todas as traduções (pode ser muito trabalhoso e muito propenso a erros quando o msgid for longo)

Isso é algo que você pode automatizar facilmente, tornando-o menos propenso a erros e também menos trabalho.

Dario Hamidi
fonte