Linux can';我不能通过debian软件包翻译我的程序,但使用autotools可以

Linux can';我不能通过debian软件包翻译我的程序,但使用autotools可以,linux,translation,gettext,autotools,deb,Linux,Translation,Gettext,Autotools,Deb,我使用autotools作为构建系统,也在代码中使用gettext进行翻译。 我几乎没有.po文件(de.po、es.po和th.po),使用自动工具可以让它们正常工作。之后: ./configure, make sudo make install 安装程序和Translations.mo文件。 要测试是否打开终端并更改区域设置,例如: $ export LANG=de_DE.UTF-8 $ ./myprogram 而且翻译工作正常 我用相同的源代码做了一个debian deb包。 在.

我使用autotools作为构建系统,也在代码中使用gettext进行翻译。 我几乎没有.po文件(de.po、es.po和th.po),使用自动工具可以让它们正常工作。之后:

./configure,
make 
sudo make install
安装程序和Translations.mo文件。 要测试是否打开终端并更改区域设置,例如:

$ export LANG=de_DE.UTF-8 
$ ./myprogram
而且翻译工作正常

我用相同的源代码做了一个debian deb包。 在.posinst脚本中安装deb期间,我将翻译mo文件部署到区域设置目标(docklight是程序名):

生成的Translations.mo文件正确,并安装在语言的区域设置文件夹中:

dir=/usr/local/share/locale/$lang/LC_MESSAGES;
与自动工具的构建过程完全相同。 测试语言后:

$ export LANG=de_DE.UTF-8 
$ ./myprogram
我的程序没有任何翻译。 我不知道问题出在哪里。deb安装工作正常

在创建debian deb包的过程中,我还需要关注其他方面吗

据我所知,当你准备好myprogramm.mo文件时,你应该翻译程序

有什么想法吗

提前感谢您的帮助。

如果找到解决方案: 我只需要设置mo文件所在的PROGRAMNAME\u LOCALEDIR路径。 gettext初始化可以找到mo文件,然后所有内容都被转换有效

  bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);
  %s\n",domain,GETTEXT_PACKAGE,PROGRAMNAME_LOCALEDIR);
  bind_textdomain_codeset - set encoding of message trans‐lations
  btdcodeset = bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
谢谢大家

如果找到解决方案: 我只需要设置mo文件所在的PROGRAMNAME\u LOCALEDIR路径。 gettext初始化可以找到mo文件,然后所有内容都被转换有效

  bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR);
  %s\n",domain,GETTEXT_PACKAGE,PROGRAMNAME_LOCALEDIR);
  bind_textdomain_codeset - set encoding of message trans‐lations
  btdcodeset = bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
谢谢大家