我正在为我们的网络应用程序开发多语言支持。我们在gettext库周围使用Django 的助手。一切都出乎意料地简单,除了如何处理包含重要 HTML 标记的句子的问题。这是一个简单的例子:
Please <a href="/login/">log in</a> to continue.
以下是我能想到的方法:
更改链接以包含整个句子。不管在这种情况下改变是否是一个好主意,这个解决方案的问题是,当两者在理想情况下独立时,UI 变得依赖于 i18n 的需求。
将上面的整个字符串标记为翻译(包括格式)。然后,翻译字符串也将直接包含 HTML。问题在于更改 HTML 格式需要更改所有翻译。
紧密耦合多个翻译,然后使用字符串插值来组合它们。例如,短语“请 %s 继续”和“登录”可以分别标记为翻译,然后合并。“登录”被本地化,然后包装在 HREF 中,然后插入到翻译的短语中,这使 %s 保持在翻译中以标记链接应该去哪里。这种方法使代码复杂化并破坏了翻译字符串的独立性。
还有其他选择吗?其他人是如何解决这个问题的?