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