wxWidgets和wxLocale - gettext和应用程序内的符号语言?

时间:2012-12-04 11:09:04

标签: internationalization wxwidgets

我正在使用wxWidgets重写我们的旧应用程序。该应用程序使用旧的自制语言词典机制,我想使用wxWidgets支持的标准gettext方式替换它。

问题是应用程序不使用用户可读的字符串,而是使用所选语言字典翻译的符号标识符。换句话说,翻译应该总是发生。例如,代码说:

wxMenu * mnuParamSelect = new wxMenu();
mnuParamSelect->Append(wxID_mnuiParamSelect,
                       _("mnuiParamSelect"),
                       _("hlpParamSelect"));

这样,它使用默认符号语言,必须始终翻译(如符号mnuiParamSelectSelect the parametres... for English,{ {1}} Vyber parametry...等。

考虑cs_CZ,这似乎不常见。我对gettext很新。我应该知道与符号语言标识方法有关的任何问题吗?

感谢您的时间和经验,

彼得

2 个答案:

答案 0 :(得分:3)

据我所知,第一个大问题是创建新翻译会很困难(或者至少耗费时间),因为翻译人员只会看到符号ID,并且需要找到相应的英文消息。不同的文件。

第二个问题:如果你使用"%d文件"这样的printf样式格式,如果符号id不包含那些,则gettext(即msgfmt)不会为你做任何语法检查格式说明符。因此,如果您的翻译人员添加了一个"%d"例如,当与该翻译一起使用时,应用程序可能会崩溃。

答案 1 :(得分:0)

po 文件可以包含一个 msgctx(消息上下文)字段,该字段构成 id 的一部分。

因此您可以将 msgctx 用作符号名称,将 msgid 用作默认区域设置文本,将 msgstr 用作翻译文本。