如何从属性文件中重构HTML标记?

Bri*_*ise 8 java jsp struts internationalization

我最近继承了一个国际化和文本密集的Struts 1.1 Web应用程序.许多JSP文件看起来像:

<p>
    <bean:message key="alert" />
</p>
Run Code Online (Sandbox Code Playgroud)

和属性文件看起来像:

messages.properties
alert=Please update your <a href="/address.do">address</a> and <a href="/contact.do">contact information</a>.
Run Code Online (Sandbox Code Playgroud)

使用其他N种语言(messages_fr.properties等)进行适当的翻译.

问题:

  1. DRY违规 - 我有N个引用我的Struts操作URL而不是1,这使得重构操作URL容易出错.
  2. 混合问题 - 我的应用程序的标记现在不仅仅是我的JSP文件,这使得Web专家很难调整标记(使用CSS等).
  3. 翻译后标记 - 每当我收到新翻译的文本时,我必须决定用<a>...</a>标记包围什么.容易学习英语,但对于不熟悉的语言则不那么容易.

我考虑在消息文件中添加占位符,例如:

alert=Please update your {0} and {1}.
Run Code Online (Sandbox Code Playgroud)

但随后单词"地址"和"联系信息"将以某种方式需要进行本地化,包含标记,并传递给我的消息标记 - 我看不到一个简单的方法来做到这一点.

我该怎么做才能改善这一点?

McD*_*ell 2

避免在长文本块中创建链接。更喜欢较短的文本,可以充当逻辑上完整且独立的链接。

一般来说,这会导致更少的问题。有时您必须妥协 UI 设计以适应本地化;有时您需要妥协本地化过程以适应用户界面。

任何时候开发人员手动操作翻译后字符串都是潜在的昂贵错误的来源。剪切/粘贴或字符串编辑可能会导致字符损坏、字符串错位等。翻译缺陷需要外部各方的参与来修复,这涉及成本和时间。

想一想,这样的事情可能不那么难看:

<p>Please update your address and contact information.
<br />
<a href="/address.do">update address</a>
<br />
<a href="/contact.do">update contact information</a></p>
Run Code Online (Sandbox Code Playgroud)

...但我不是 UI 设计师。