django i18n:确保你有GNU gettext工具

use*_*364 22 python django

我尝试django-admin.py makemessages -l zh_CN但有错误:

CommandError: Can't find msguniq. Make sure you have GNU gettext tools 0.15 or newer installed.
Run Code Online (Sandbox Code Playgroud)

在我使用brew install gettext之后,它仍然出错了.
我需要做点什么吗?这是我的终端截图
请指导我谢谢.

在此输入图像描述

rei*_*man 34

对于Mac用户,安装Homebrew和gettext后,@ Luis Barranqueiro说(步骤1和2):

  1. 安装Homebrew:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. 安装GNU gettext: brew install gettext

您不应该brew link gettext --force在步骤3中使用,因为它有风险(如果您尝试Brew建议).更好的解决方法是PATH variable为您的虚拟环境设置新的.因此,在postactivate位于虚拟环境文件夹的bin文件夹中的文件中,键入:

export TEMP_PATH=$PATH
export PATH=$PATH:/usr/local/Cellar/gettext/0.19.7/bin
Run Code Online (Sandbox Code Playgroud)

请注意,您必须更换0.19.7计算机中安装的版本.

并在您的predeactivate文件中,它位于文件的同一文件夹中postactivate,键入:

export PATH=$TEMP_PATH
unset TEMP_PATH
Run Code Online (Sandbox Code Playgroud)

现在你可以python manage.py makemessages -l <desired_language>毫无后顾之忧地使用.:)

干杯.

  • 我在我的虚拟环境文件夹的bin文件夹中找不到任何`postactivate`文件... (2认同)
  • 对于使用“venv”的人,只需将“export PATH=$PATH:/usr/local/Cellar/gettext/YOUR_VERSION/bin”添加到“activate”文件的底部即可。 (2认同)

Joe*_*eng 17

在Ubuntu中:

$ sudo apt-get install gettext
Run Code Online (Sandbox Code Playgroud)


Lou*_*iro 12

这个程序对我有用(OSX 10.11.2 - python v3.5和Django 1.8) 它应该适用于你的配置.

使用Terminal安装带有Homebrew的gettext GNU工具

  1. 安装Homebrew :/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. 安装GNU gettext: brew install gettext
  3. 创建符号链接: brew link gettext --force


Far*_*Far 7

这个解决方案对我有用(赢7、8和10)

您需要下载两个文件夹:

  • gettext-runtime_0.18.1.1-2_win32
  • gettext-tools-dev_0.18.1.1-2_win32

您可以在这里找到它们。

  • 下载它们后,将它们解压缩并将两个文件夹的bin文件的目录添加到PATH您PC 的系统变量中。

  • 您还需要一个名为libstdc ++-6.dll的文件,可从此处下载并将其放置在系统目录中。您可以在此处找到有关系统目录的足够详细信息。

就是这样。希望它对您有用。


Ane*_*pic 0

问题在brew...的输出中有所暗示

它已经安装了 GNU gettext 但尚未将其链接到您的 bin 目录中,因为 OSX 已经提供了不同版本的 gettext...

所以Django不知道运行你从brew安装的版本。

显然,brew在这里太谨慎了,你应该链接它/sf/answers/685145401/