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