管理Java属性文件的本地化

我有一个用Java编写的Web应用程序,它针对的是几个国家,所有这些国家都使用不同的语言(通常是几种语言 – 欧洲适合您)。

我们有一堆包含本地化字符串的.properties文件,我们当前的程序是在进行重大更新之前通过电子邮件将特定于语言的文件发送给我们的合作伙伴进行更新。

但是,这个过程非常容易出错,因为有时候人们会忘记翻译新的字符串,有时新字符串不会被添加到每个语言文件中,因此很容易出现小错误。

有没有人知道任何可以帮助我们清除这个烂摊子的现有软件?

至少,我正在考虑允许您加载主文件(例如,英语),本地化文件然后突出显示添加到主文件或从主文件中删除的键的内容。

我已经将Jinto用于此目的以及EPFE (旧版本,尚未尝试过最新版本)。

两者都是Eclipse插件,如果您可以通过他们将重新排序资源包中的密钥的事实,两者都相当不错。 然后还有Babel – 我没有亲自尝试过,所以我不知道它有多好。

我们使用https://webtranslateit.com/作为托管服务。

只要有变化,我们的持续集成服务器就会上传我们的(英语)Java属性文件。 然后,不同语言的用户可以登录并更新其翻译。

有一个很好的API允许我们为我们的Web应用程序“动态”获取翻译,但这只是目前的内部解决方案。

当有版本时,我们下载文件,将它们与我们的应用程序捆绑在一起并进行部署。

该解决方案突出了翻译,未翻译,需要validation,提供翻译记忆和整合,即谷歌翻译。

最好的问候,亚历山大

Netbeans有一个非常出色的Java属性编辑器,它可以并排显示每个语言环境。 您可以轻松查看不同语言不存在哪些属性。

对于您没有内部翻译的语言的导入,管理甚至可能订购翻译,myGengo的String(http://mygengo.com/string/about)是一个免费的托管解决方案。 支持为各种平台导入各种语言文件。 (完全披露 – 我是myGengo的联合创始人)

即使这是原始海报的时间范围:

i18nBinder

是一个Ant任务,用于将属性文件转换为Excel XLS文件。

区域设置放在每个键(行)的列中。

然后,它将xls文件中的更改写回原始文件。 这非常方便,因为你使用Excel编辑,每个人都熟悉这一点。

最好的祝福

那么本地化的 Eclipse插件怎么样? 它与Jinto类似,但支持Eclipse版本高达3.6。

Eclipse ResourceBundle编辑器似乎是“Eclipse插件”部门中最新的(更好的,恕我直言)选择。

在此处输入图像描述

有时人们会忘记翻译新的字符串,有时新的字符串不会被添加到每个语言文件中,因此很容易出现小错误。

我使用稍微不同的方法,因为我发送.properties文件,其中包含按照我想要的顺序与新的未翻译字符串合并的现有本地化字符串。

新字符串标有“伪翻译”字符,因此通过简单的文本搜索很容易找到未翻译的字符串。

译者很少失去属性或忘记翻译字符串。 最常见的错误是忘记从新翻译的字符串中删除伪翻译字符。 在将新翻译提交回修订控制系统之前的差异检查非常好地捕获这些错误。

该系统运行良好,现在它是半自动化的,每个本地化更新需要大约一个小时,而不是过程完全手动时过去需要的1-2天。

我编写了自己的工具来生成合并文件,并在新主服务器,旧本地化文件和新生成的合并文件之间进行三向比较,但是以相同方式合并更改的任何工具都可以使用此过程。

我一直在使用JRC编辑器来管理资源包。 它将突出显示缺少值的键,如下所示 屏幕截图

它还允许您使用本机语言处理捆绑包(因此最终用户友好),它将在幕后将字符转换为“\ uxxx”。

CAL10N项目旨在解决此问题。 它通过添加validation原语构建在资源包上。 它也很容易使用。

答案有点晚,但是为了将来的参考,也有舌头 。 它是一个基于Web的开源应用程序,用于管理静态资源和翻译。 可以通过Web界面输入翻译。 它支持导入/导出许多格式,如java属性文件,excel文件,csv等。如果需要,它还内置了一个小工作流程。

免责声明 :我是项目负责人。

我尝试过Everit – i18n Props XLS Converter ,它完成了这项工作。

您可以指定包含翻译的属性.properties的位置,并且您将获得填充了其中包含的所有值的.xls。

此时,您可以将xls发送给您的翻译器,这些翻译器将使用正确的翻译填充它,然后将其转换回.properties以在您的Java项目中使用。

该项目托管在github中,需要使用maven和jdk8构建。

哇,我很惊讶人们没有在Excel中探索明显的重要性。

转到Excel – >导入 – >选择属性文件(选择打开文件类型中的所有文件)。

它会询问您是否要对列进行分隔,请检查该选项。

在导入过程的下一个屏幕上,它会询问您想要哪种分隔符,选择其他并在框中输入“=”(不带引号)

选择下一个,然后选择。 您有一张excel表,其中的属性已准备就绪。