相关疑难解决方法(0)

gettext的替换

我们在产品中使用gettext进行翻译,但是它遇到了很多问题:

  • 除非系统支持,否则无法使用语言.

在Solaris 9 Sparc上,如果我们将环境重置为各种英语语言环境,则如果计算机没有相应的语言环境,则仍不会翻译该消息.转换文件存在,但我们无法访问它.

  • 使用环境来制定语言

这会导致想要将消息转换为不同语言的服务器出现问题.从理论上讲,这可能是一个完全线程安全,可并行化的操作 - 但gettext意味着我们必须全面锁定翻译.

  • 无法设置默认语言

通过这个我不是指代码中的文本.我们在代码中使用MsgID,所以我想要的是能够指定一个后备转换,如果当前环境定义语言不可用.但gettext不允许这样做 - 我必须尝试,然后重新设置环境才能查看不同的翻译.(使用MsgIDs不是我的选择 - 我想遵循gettext标准并使用英语作为ID,但我被推翻了,现在改变它将是很多工作)

  • 返回的编码在UTF-8和当前本地编码之间变化.

我不是指.po文件 - 它们都是UTF-8(烦人的是,msgfmt不处理BOM,但无论如何).我的意思是gettext ngettext等的输出,它们在AIX和HPUX上是UTF-8(无论本地/终端编码),但在Solaris/Linux/FreeBSD上是本地编码,尽管这可能是由于iconv问题引起的?

在任何情况下,不必为不同的平台拥有特殊代码是很好的 - 我将不得不调查我是否可以bind_textdomain_codeset(domain,codepage);帮助解决这个问题.


有谁知道开源翻译库提供更有用的界面?

c++ unix linux internationalization

5
推荐指数
1
解决办法
1827
查看次数

标签 统计

c++ ×1

internationalization ×1

linux ×1

unix ×1