【问题标题】:Managing the localization of Java properties files管理 Java 属性文件的本地化
【发布时间】:2009-09-02 01:07:11
【问题描述】:

我有一个用 Java 编写的 Web 应用程序,它面向多个国家/地区,所有这些国家都使用不同的语言(而且通常情况下,有几种语言——对你来说就是欧洲)。

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

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

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

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

【问题讨论】:

  • 那是我作为实习生的第一个项目;-P!不幸的是,它是一个内部工具。

标签: java localization properties


【解决方案1】:

我已经为此使用了Jinto 以及EPFE(旧版本,没有尝试过最新版本)。

两者都是 Eclipse 插件,如果您能够克服它们会重新排序资源包中的键的事实,那么两者都相当不错。然后还有Babel——我个人没试过所以不知道好不好。

【讨论】:

  • 这些确实是有趣的项目,但不幸的是,它们似乎不适合没有主要工作的非技术翻译人员。
  • @andri - 你所说的“主要工作”是什么意思?您需要安装 Eclipse 和其中一个插件 - 就是这样;之后没有任何“技术”内容。您的翻译人员会看到这样的屏幕:guh-software.de/images/jinto1.gif,做他们的事,然后您将取回您的资源包。如果您喜欢冒险 :-) 您甚至可以向他们展示如何从 Eclipse 中检查它。
  • 我的意思是用户是非技术人员——安装 Eclipse 和插件,更不用说使用 SCM,远远超出了他们。我需要用精简的 Eclipse 制作一个包(因为过多的功能势必会让他们感到困惑)只有这些插件,并希望它们在安装时不会搞砸。
【解决方案2】:

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

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

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

当发布时,我们下载文件,将它们与我们的应用程序捆绑并部署它。

该解决方案突出显示已翻译、未翻译的内容、需要验证的内容、提供翻译记忆库以及集成到谷歌翻译。

最好的问候, 亚历山大。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 鉴于 Jinto 尚未更新且 MultiProperties 有效,但使用自定义 XML,NetBeans 似乎是最佳选择 - 即使对于 Eclipse 用户也是如此。
    【解决方案4】:

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

    【讨论】:

    • 你的工具看起来很不错。关于如何配合版本控制,是否有任何推荐甚至实施的流程?我希望其他人翻译我的文件,但我还必须将最终结果保存在版本控制中。
    【解决方案5】:

    即使这超出了原始海报的时间范围:

    i18nBinder

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

    语言环境被放置在每个键(行)的列中。

    然后它将 xls 文件中的更改写回原始文件。这很方便,因为你是用 Excel 来编辑的,所以每个人都熟悉。

    最好的问候

    【讨论】:

      【解决方案6】:

      localizedproperties Eclipse 插件呢?与 Jinto 类似,但支持 Eclipse 版本高达 3.6。

      【讨论】:

        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

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

          我使用了一种稍微不同的方法,我按照我希望它们返回的顺序发送了包含现有本地化字符串与新的未翻译字符串合并的 .properties 文件。

          新字符串标有“伪翻译”字符,以便通过简单的文本搜索轻松找到未翻译的字符串。

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

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

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

          【讨论】:

            【解决方案9】:

            我一直在使用JRC Editor 来管理资源包。它将突出显示缺少值的键,如下面的 所示。

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

            【讨论】:

            • 可能很有趣,但它适用于 Windows 3.1 以外的任何操作系统吗?
            【解决方案10】:

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

            您可以指定包含翻译的 .properties 的位置,您将获得一个 .xls,其中包含其中包含的所有值。

            此时,您可以将 xls 发送给您的翻译人员,他们将使用正确的翻译填充它,然后将其转换回 .properties 以在您的 java 项目中使用。

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

            【讨论】:

              【解决方案11】:

              CAL10N 项目旨在解决这个问题。它通过添加验证原语建立在资源包之上。它也相当容易使用。

              【讨论】:

                【解决方案12】:

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

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

                【讨论】:

                  【解决方案13】:

                  哇,我很惊讶人们没有探索 Excel 中明显的导入是多么疯狂。

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

                  它会询问您是否要分隔列,请选中该选项。

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

                  选择下一步,瞧。你有一个准备好属性的 Excel 表。

                  【讨论】:

                  • 这个问题和 Excel 有什么关系?
                  • 这会引起很多问题,首先是第一个引号后如何处理引号的问题。然后是 unicode 转义。可能还有其他一些人。
                  • 这听起来不错,但我认为您会遇到 unicode 问题。以及如何再次导出属性文件。
                  猜你喜欢
                  • 2014-11-18
                  • 2012-01-02
                  • 2017-05-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多