2010-02-02 96 views
26

是否有任何一般的本地化/翻译替代gettext?gettext的替代方法?

开源或专有无关紧要。

当我说gettext的替代方法时,我的意思是一个国际化的库,有一个本地化的后端。

我问的原因是(除其他外)我发现gettext的方式稍微麻烦和静态,主要在后端位。

+0

究竟的gettext的你觉得累赘? – 2010-02-02 16:14:33

+1

很难指出某些特定的东西,但这与它感觉效率低下的工作流程有关。 – 2010-02-02 16:18:56

+2

我不认为你会找到更好的东西。它有非常好的工具来处理翻译和消息提取等等。这是最流行的一种,可能你只需要好好学习。 – Artyom 2010-02-02 16:20:59

回答

40

首先我认为gettext是目前最好的之一。

你可以看看Boost.Locale,它可以提供更好的API并使用gettext的字典模型:http://cppcms.sourceforge.net/boost_locale/docs/(不是Boost的官方部分,仍然是测试版)。


编辑:

如果你不喜欢gettext ......

这些翻译技术:

  • OASIS XLIFF
  • GNU gettext的PO /月文件
  • PO SIX目录
  • Qt的TS/TM的文件
  • Java属性,
  • Windows资源。

现在:

  • 最后两位总废话...很难使用翻译和维护,不支持复数形式。
  • Qt ts/tm - 需要使用Qt框架。有非常相似的模型gettext。不错的解决方案,但仅限于Qt。在通用程序中不太有用。
  • POSIX目录 - 没有人使用它们,没有复数形式的支持。废话。 OASIX XLIFF - “标准”解决方案取决于XML,即使是ICU也需要编译为特定的ICU资源才能使用。有限的翻译工具,我不知道任何支持XLIFF的库。复数形式不易使用(ICU仅在4.x版本中包含一些支持)。

现在我们有什么?

GNU gettext,用途广泛,具有很大的工具,具有极大的复数形式的支持,在翻译界很受欢迎...

作出这样的决定,你真的认为gettext的也不是那么好解决办法?

我不这么认为。你还没有和其他解决方案一起工作,所以试着首先了解它是如何工作的。

+5

看,这是我正在寻找的答案。一些实际的选择。无论他们是好还是坏,无关紧要,只是我可以看到不同的做事方式。显然没有那么多,但那不是重点。 ;) – 2010-02-03 07:25:39

+1

翻译这些日子不是在记事本中完成的,有用于本地化和开发的所见即所得工具。 对于Java或Windows资源来说,翻译和维护都比其他任何方面都难。 – 2010-02-03 09:07:01

+3

gettext中的复数形式对于某些语言来说还不够,反正在字符串中填充复数形式只是极客可以处理的东西,而不是普通的翻译(具有语言背景)。 Java属性可以处理复数形式,请参阅MessageFormat 示例:“There {0,choice,0#is no files | 1#is one file | 1 2010-02-03 09:09:35

2

关于gettext()和所有那些pro-gettext()的有趣评论。

我并不是说它在大多数情况下不能正常工作,但我试图用它来管理一个项目,并很快被使用它的难度所压倒。也许今天有翻译的用户界面,但我甚至没有看。字符串的提取和合并只是不适合我。

现在,我感谢Artyom谈论XLIFF,这对我的环境来说是一个更好的解决方案,因为一切都是XML。哦!那里有优秀的编辑。但是如果你喜欢gettext(),你不会找到它们。 8-)

我会建议在看这一个例子:

https://sourceforge.net/projects/wordforge2/

现在,这可以使程序员的梦魇,使这一切工作,但我们要的是一个梦想成对于翻译者来说这是真的(因为我可以告诉你用gettext()我不得不做所有的工作,所以编程人员不需要做任何工作!)

+0

我知道这个帖子是旧的。有非常好的图书馆翻译工具包(http://toolkit.translatehouse.org/)。 gettext的一点是:你如何定义字符串来翻译和字符串不去。你如何提取这些字符串。如何导入长时间保持最新的翻译字符串。这不是关于你用来翻译的编辑器。您可以使用脚本,无需手工将po转换为XLIFF,然后使用Toolkit返回。 – Pihhan 2013-11-05 14:08:59

+0

是啊,我的经历是在2004年左右,当时我不得不手工完成所有的工作以便翻译。今天我们有更好的工具! – 2013-11-06 06:34:15

2

Zend支持gettext *。 po/* .mo文件和更多格式。 许多Apache服务器都缓存翻译文件,因为gettext是作为模块实现的,必须重新启动服务器才能刷新翻译数据。

在Zend实现避免了这一点,并支持更多的格式:

http://framework.zend.com/manual/1.12/en/zend.translate.html