我正在为我们的Web应用程序开发多语言支持。我们正在使用Django的帮助程序,围绕gettext库进行操作。除了如何处理包含重要HTML标记的句子这个问题以外,一切都出奇地容易。以下是一个简单的例子:
Please <a href="/login/">log in</a> to continue.
以下是我能想到的方法:
将链接更改为包含整个句子。无论在这种情况下是否改变是个好主意,这种解决方案的问题在于UI变得依赖i18n的需求,而两者理应是独立的。
将上述整个字符串标记为翻译(包括格式)。随后,翻译字符串将直接包含HTML。这种方法的问题在于更改HTML格式需要更改所有翻译内容。
紧密耦合多个翻译,然后使用字符串插值组合它们。例如,“请%s继续”和“登录”这个短语可以分别标记翻译,然后组合在一起。“登录”被本地化,然后用HREF包装,最后插入到已翻译的短语中,从而保留了翻译中的%s,以标记链接的位置。这种方法会使代码复杂化,并且会破坏翻译字符串的独立性。
还有其他选项吗?其他人是如何解决这个问题的?