我正在尝试从我的共享主机更新Git.为此,我遵循以下步骤:
./configure --prefix=$HOME/dev/git/src --without-tcltkmake然后make install我被困在第4点.当我运行make命令时,我得到以下内容:
user@ssh1:~/dev/git/src$ make
SUBDIR gitweb
SUBDIR ../
make[2]: ? GIT-VERSION-FILE ? est ? jour.
GEN git-instaweb
SUBDIR perl
SUBDIR git_remote_helpers
SUBDIR templates
MSGFMT po/build/locale/is/LC_MESSAGES/git.mo
/bin/sh: msgfmt: command not found
make: *** [po/build/locale/is/LC_MESSAGES/git.mo] Erreur 127
Run Code Online (Sandbox Code Playgroud)
编译器抛出msgfmt command not found错误.
我用Google搜索它,它似乎与gettext包有关.
知道如何在共享主机上修复该错误吗?
我们有两个.po文件,每个文件来自一个软件的不同分支.
我们需要将它们组合成一个.po文件.
这两个文件之间存在重复,理想的处理方式是使一个文件的字符串受到青睐(一致).
我们有一个SUSE系统,因此--output-file似乎没有根据我从网络搜索中找到的手册页忽略/合并Sun版本所具有的重复项的行为.(我们没有太阳机方便!)
我正在尝试在 Debian(Linux 的 Windows 子系统)上编译静态 Git 2.17.1:
$ mkdir _git
$ make configure
$ ./configure --prefix=$PWD/_git NO_TCLTK=true NO_GETTEXT=true CFLAGS="${CFLAGS} -static"
$ make all
Run Code Online (Sandbox Code Playgroud)
但我收到错误
...
MSGFMT po/build/locale/pt_PT/LC_MESSAGES/git.mo
/bin/sh: 1: msgfmt: not found
Makefile:2309: recipe for target 'po/build/locale/pt_PT/LC_MESSAGES/git.mo' failed
make: *** [po/build/locale/pt_PT/LC_MESSAGES/git.mo] Error 127
Run Code Online (Sandbox Code Playgroud)
NO_GETTEXT我从配置文件中得到的信息:
# Define NO_GETTEXT if you don't want Git output to be translated.
Run Code Online (Sandbox Code Playgroud)
还需要吗msgfmt?
我正在使用blocktrans标签渲染一些复数 ; 这是模板文件中的相关代码段:
{% blocktrans count choice_count=choice_count %}
You have {{ choice_count }} choice:
{% plural %}
You have {{ choice_count }} choices:
{% endblocktrans %}
Run Code Online (Sandbox Code Playgroud)
运行后python manage.py makemessages --all,这是我的,如有关片段django.po文件en:
msgid ""
"\n"
" You have %(choice_count)s choice:\n"
msgid_plural ""
"\n"
" You have %(choice_count)s choices:\n"
msgstr[0] "You have one choices:"
msgstr[1] "You have %(choice_count)s choice(s):"
Run Code Online (Sandbox Code Playgroud)
但是当我运行时python manage.py compilemessages,这是我收到的错误消息:
$ ./manage.py compilemessages
processing file django.po in /home/yiqing/repos/training/site/training/locale/en/LC_MESSAGES
/home/yiqing/repos/training/site/training/locale/en/LC_MESSAGES/django.po:60: `msgid' …Run Code Online (Sandbox Code Playgroud) 我正在为一个非常具体的项目创建一个 bash 脚本,并且字符串必须是可翻译的。
我已成功遵循以下教程:gettext 支持 bash 脚本: http:
//mywiki.wooledge.org/BashFAQ/098
但是,本教程的一部分要求运行 msgfmt 命令来为每种语言生成已编译的 .mo 文件。为了使其工作,我必须以 root 身份运行该命令,并且 .mo 文件保存在 /usr/share/locale/(lang)/LC_MESSAGES 下。
我希望将 .mo 文件保存在相对于 bash 脚本的子目录中,这很容易。但是,当脚本运行时,bash 必须知道必须在适当的自定义位置查找 .mo 文件。
如何实现这一目标?
我想做的是让整个项目以及 .pot 和 .mo 文件成为独立的,并且能够更新翻译而无需使用 sudo。
我必须使用 msgfmt 将文件 .po 编译为 .mo,所以我安装了 gettext(最新版本)并对chmod 777我的整个文件夹执行了操作。
当我编译文件时:
msgfmt /home/myuser/file.po -o /home/myuser/file.mo
Run Code Online (Sandbox Code Playgroud)
没有错误,没有生命信号,什么都没有。
我该如何解决?
msgfmt ×6
gettext ×4
bash ×2
git ×2
django ×1
django-i18n ×1
linux ×1
plural ×1
translation ×1