Я разрабатываю многоязычную поддержку нашего веб-приложения. Мы используем помощников Django для gettext. Все оказалось на удивление легко, за исключением вопроса о том, как обрабатывать предложения, содержащие значительную разметку HTML. Вот простой пример:
Please <a href="/login/">log in</a> to continue.
Вот подходы, о которых я могу думать:
Измените ссылку, чтобы включить все предложение. Независимо от того, является ли изменение хорошей идеей в данном случае, проблема с этим решением состоит в том, что пользовательский интерфейс становится зависимым от потребностей i18n, когда они идеально независимы.
Отметьте всю строку выше для перевода (включая форматирование). Тогда строки перевода также будут напрямую включать HTML. Проблема в том, что изменение форматирования HTML требует изменения всего перевода.
Плотно соедините несколько переводов, а затем используйте интерполяцию строк, чтобы объединить их. Например, фразы «Пожалуйста,% s, чтобы продолжить» и «войти в систему» могут быть выделены отдельно для перевода, а затем объединены. «Вход в систему» локализуется, затем помещается в HREF, затем вставляется в переведенную фразу, которая сохраняет% s в переводе, чтобы отметить, куда должна идти ссылка. Такой подход усложняет код и нарушает независимость строк перевода.
Есть ли другие варианты? Как другие решили эту проблему?