使用 Java Spring i18n 翻译长文本的最佳实践

Best practice translate long texts with Java Spring i18n

我使用 Java Spring i18n 来翻译我的网页。我想知道翻译长文本的最佳做法是什么。

示例: 我有属性文件 usermsg_en.properties:

short_text = short line
long_text = post about something with lot of text lines...

和jsp文件:

....
<div id="content"><spring:message code="long_text"/></div>
....

短文或长文,这并不重要。当涉及到国际化时,真正棘手的事情是字符串的翻译在不同语言中的长度会有所不同,这通常与您的 UI.

不相称。

您确实需要用您计划提供的每种语言测试您的 UI,以找出不同语言的字符串可能会破坏您的布局的位置。

此外,您的软件对 dates/times/word 订单等做出的许多假设在其他 languages/locales 中可能完全不存在。

有一篇关于国际化的好文章here

根据该列表,我们在我的工作中做了很多国际化工作,我的首要任务是:

  • 不要连接字符串
  • 不要硬编码 date/time/currency 值
  • 给弦乐增加和收缩的空间
  • 从不,永远不要相信浏览器知道语言环境(下划线 'never' 并进行研究)

此外,如果您还没有这样做,您肯定希望将所有字符串存储在 .properties 文件中

James Scott Tayler 写的一切都是正确的:请听从他的建议。不过,关于翻译长字符串,您可能还需要考虑另外两件事:

  1. 避免在源语言字符串中使用硬编码换行符。除非翻译人员可以访问实时系统,在那里他们可以看到需要在目标语言中放置换行符的位置,否则他们根本不知道目标语言行需要换行的位置。从理论上讲,这对网站来说应该不是什么大问题,但我已经看到网站字符串中 \n 出现的次数太多了,所以更不用说了。

  2. 专业翻译人员在 translation memories 的翻译环境中工作。翻译记忆库是存储以前翻译的数据库,每当翻译人员遇到需要翻译的新字符串时,就会在翻译记忆库中查找该字符串和以前的翻译。软件 UI 文本的典型存储单元是单个字符串,文档是一个句子或一段。当翻译人员打开属性文件进行翻译时,翻译记忆库通常会为您的长文本搜索单个现有翻译(因为它来自属性文件)。如果将长文本逐句处理,翻译人员可能会得到更多匹配,这意味着翻译可以更快、更便宜地完成。

当然,第二个问题在第一轮翻译后不再适用于您的长文本。如果您不必为翻译付费,它也不适用。 :-)