Перевод длинных текстов (шаблонов представлений и электронной почты) с помощью gettext

Я разрабатываю многоязычное веб-приложение PHP, и у меня есть длинные (-щие) тексты, которые мне нужно перевести с помощью gettext . Это шаблоны электронной почты (обычно короткие, но все же несколько строк) и части шаблонов представления (более длинные описательные блоки текста). Эти тексты будут включать в себя простой HTML (например, жирный / курсив для выделения, возможно, ссылку здесь или там). Шаблоны представляют собой сценарии PHP, вывод которых фиксируется.

Проблема в том, что gettext кажется очень неуклюжим для обработки длинных текстов.В более длинных текстах, как правило, будет больше изменений с течением времени, чем в коротких - я могу либо изменить msgid и обязательно обновить его во всех переводах (может потребоваться много работы и очень подвержено ошибкам, если msgid длинный), либо я могу сохранить msgid без изменений и измените только переводы (в результате в шаблонах останутся устаревшие тексты, вводящие в заблуждение). Кроме того, я видел советы против включения HTML в строки gettext, но избегание этого могло бы разбить один естественный фрагмент текста на множество фрагментов, что будет еще большим кошмаром для перевода и повторной сборки, и я также видел советы против ненужное разбиение строк gettext на отдельные msgid.

Другой подход, который я вижу, - это полностью игнорировать gettext для этих более длинных текстов и разделять эти блоки во внешних подшаблонах для каждой локали и просто включать блок для текущей локали. Недостатком является то, что я разделяю усилия по переводу между файлами gettext .po и отдельными шаблонами, расположенными в совершенно другом месте.

Поскольку это приложение будет использоваться в качестве отправной точки для других приложений в будущем, я пытаюсь найти лучший подход в долгосрочной перспективе. Мне нужен совет по передовой практике в таких сценариях. Как вы реализовали подобные кейсы? Что сработало, а что оказалось плохой идеей?

13
задан ento 26 April 2013 в 02:59
поделиться