我最近继承了一个国际化和文本的沉重的支柱1.1网应用程序。许多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.性能,等)。

问题:

  1. 干违反 -我有提到我的支柱行动的网址,而不是1,这使得重构行动的网址容易出错。
  2. 混合的问题 -我应用程序的标记,现在是更多的不仅仅是我的JSP文件,因此很难为一个网络专家,以调整的标记(使用CSS,等等)。
  3. 翻译后的标记 -随时随地我会收到的新的翻译文本,我必须决定如何围绕与 <a>...</a> 标记。容易的英语,但较少使用不熟悉的语言。

我已经考虑加入占位的信息文件,如:

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

但是那一句"地址"和"联系信息"将以某种方式需要进行本地化,包裹用的标记,并传递到我的消息标签--我可看不到一个简单的方式来做到这一点。

我能做些什么,以改善这个?

有帮助吗?

解决方案

避免建立联系的内长 块的文本。更喜欢较短的文本 这可以作为一个逻辑完成 和独立链接。

一般来说,这将导致较少的问题。有时候你必须妥协你的用户界面的设计以适应本地化;有时你需要妥协你的本地化过程中容纳的用户界面。

任何时开发人员手工操纵后翻译字符串是一个来源可能很昂贵的错误。切割/粘贴,或者编辑串可能导致符腐败、串的错误,等等。翻译缺陷的需要的参与之外的各方来解决其涉及的成本,并需要时间。

想在它,像这样的东西可能是小丑:

<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>

...但我没有用户界面的设计师。

其他提示

一种办法是,你可以翻译存储替换参数,即"地址"和"联系信息,"在一个单独的属性文件,每个区域设置。然后有你的动作类(或可能是一些助手等)查找的数值从正确的ResourceBundle当前区域,并通过他们的消息标签。

也许是:

#
alert=Please update your {0}address{1} and {2}contact information{3}.

该消息标签API允许 只有5个参数参数

啊!我责怪我的完全无知的支柱。

引用的 手册:

一些特点,在这个标签库 也可在次 网页的标准标记库(JSTL).的 支柱队鼓励使用 标准标记过特定的支柱 标记在可能的情况。

你也许可以这样做的 http://java.sun.com/jsp/jstl/fmt 标签库.

<fmt:bundle basename="messages">
    <fmt:message key="alert">
        <fmt:param value='<a href="/">' />
        <fmt:param value="</a>" />
        <fmt:param value='<a href="/">' />
        <fmt:param value="</a>" />
    </fmt:message>
</fmt:bundle>

缺点是,这不是有效的XML和唬弄的价值观变量涉及到更多间接、查找和详细程度。这不是一个很好的解决方案。

我不知道支柱,但如果它是什么样的一次面(同建筑师),再有就是可能的支持,用于配置一个替代的控制。我会取代现有的控制与一个更加灵活的一个或添加一个新的。

随时随地我收到新-翻译 文本,我必须决定什么样的包围 与 <a>...</a> 标记。

有没有办法你应该这样做,我看到这个作为一个故障,在你的翻译进程(我是一名前本地化工程师和前开发的本地化工具)。的 {0} 人物应包括在文件,这些文件发送给笔译员。本地化的准则应当解释串的背景和意义的任何变量。

你可以编程方式验证酒店束对返回。串具体regex的可能做到。这不是外领土的可能性,即"地址"和"联系信息"会交换了期间的翻译。

最简单的解决办法是重新设计的信息呈现:

<a href="/address.do">Please update your address.</a>
<a href="/contact.do">Please update your contact information.</a>

我接受,这可能不是一个解决方案在所有情况和可能有你的用户界面的设计师吐的牙齿。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top