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

时间:2016-01-11 12:20:39

标签: java spring internationalization

我使用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>
....

2 个答案:

答案 0 :(得分:2)

James Scott Tayler所写的一切都是对的:请听从他的建议。不过,还有两个关于翻译长字符串的内容可能需要考虑:

  1. 避免使用源语言字符串中的硬编码换行符。除非译员可以访问实时系统,在那里他们可以看到他们需要在目标语言中放置换行符,他们根本不知道目标语言行需要包装的位置。从理论上讲,对于网站而言,这不应该是一个大问题,但我已经看到在网站的字符串中出现过多\n的事情而没有提到这一点。

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

  3. 当然,第二期不再适用于长篇文章的第一轮翻译。如果您不需要为翻译付费,它也不适用。 : - )

答案 1 :(得分:1)

短文或长篇文章,这并不重要。谈到国际化,真正棘手的问题是字符串的翻译在不同的语言中会有不同的长度,这通常不适合你的用户界面。

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

您的软件对日期/时间/单词订单等做出的许多假设也可以在其他语言/区域设置中完全关闭。

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

我的工作中从我的工作中做了很多国际化的事情,我最重要的事情是:

  • 不连接字符串
  • 不硬编码日期/时间/货币值
  • 给予成长和收缩的空间
  • 永远不要相信浏览器知道区域设置(强调“从不” 并进行研究)

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