1

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

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

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

这样,它使用必须始终翻译的默认符号语言(例如英语的符号转换为 ,for等)。mnuiParamSelectSelect the parametres...Vyber parametry...cs_CZ

考虑到这似乎不是通常的方法gettext。我很陌生gettext。我应该知道与符号语言识别方法相关的任何问题吗?

感谢您的时间和经验,

彼得

4

2 回答 2

3

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

第二个问题:如果您使用像“%d 文件”这样的 printf 样式格式,如果符号 id 不包含这些格式说明符,gettext(即 msgfmt)将不会为您进行任何语法检查。因此,例如,如果您的翻译器添加了太多“%d”,则应用程序在与该翻译一起使用时可能会崩溃。

于 2012-12-04T16:27:05.617 回答
0

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

因此,您可以使用msgctx符号名称、msgid默认语言环境文本和msgstr翻译文本。

于 2021-04-28T23:50:01.650 回答