java - 如何从我的属性文件中重构 HTML 标记?

标签 java jsp internationalization struts

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

<p>
    <bean:message key="alert" />
</p>

属性文件如下所示:

messages.properties
alert=Please update your <a href="/address.do">address</a> and <a href="/contact.do">contact information</a>.

N 种其他语言的适当翻译(messages_fr.properties 等)。

问题:

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

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

alert=Please update your {0} and {1}.

但是“地址”和“联系信息”这两个词需要以某种方式进行本地化,用标记包裹,然后传递到我的消息标签 - 我找不到一种简单的方法来做到这一点。

我可以做些什么来改善这一点?

最佳答案

Avoid creating links within long blocks of text. Prefer shorter text that can act as a logically complete and independent link.

通常,它会导致更少的问题。有时您必须妥协您的 UI 设计以适应本地化;有时您需要妥协您的本地化过程以适应 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>

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

关于java - 如何从我的属性文件中重构 HTML 标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225/

相关文章:

java - 如何在Struts 2中使项目国际化?

php - 转换 UTF8 文本以在 URL 中使用

java - 如何从 Java 代码禁用 log4j 日志记录

java - 是什么原因导致“java.lang.IllegalStateException:BeanResult'command'的BindingResult和普通目标对象都不能用作请求属性”?

java - DataOutputStream 好像没有发送参数

javascript - 将 jSTL 列表传递给 onclick 事件下的 javascript 函数

JavaScript 验证国际字符的问题

java - Struts JSP/html 插入当前日期

java - 为什么 Java 日历中的 1 月是 0 月?

适用于 Linux 和 Window 的 Java Spring 项目环境属性文件