为什么OS X上缺少gettext别名_()?

时间:2011-08-16 22:02:11

标签: php osx-lion

我正在运行OS X Lion,我的部分代码使用gettext的{​​{1}}别名,但我收到此错误

_()

这是我的环境

Fatal error: Call to undefined function _() 

我尝试使用php选项PHP 5.3.6 with Suhosin-Patch (cli) (built: Jun 25 2011 10:41:21) Copyright (c) 1997-2011 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies with Xdebug v2.1.1, Copyright (c) 2002-2011, by Derick Rethans ,但这并没有改变任何东西,所以它似乎不是Suhosin-Patch。

2 个答案:

答案 0 :(得分:7)

有关记录......这是gettext添加到OS X Lion

的方法

安装ICU

Download ICU

运行这些命令

tar xzvf icu4c-4_8_1-src.tgz
cd icu/source
./runConfigureICU MacOSX
make
sudo make install

Download PHP 5.3.6 sources

运行这些命令

tar -zxf php-5.3.6.tar.gz
cd ext/intl
phpize
./configure --enable-intl
make
sudo cp modules/intl.so /usr/lib/php/extensions/no-debug-non-zts-20090626/

使用

将其放入php.ini文件中
extension=intl.so

安装Gettext

Download Gettext

运行这些命令

tar -zxf gettext-0.18.1.1.tar.gz
cd  gettext-0.18.1.1
  

Apple不会发送Gettext和Intl,问题在于Gettext显然定义了Stpncpy函数,就像Lion中的内容一样。

您需要打开gettext-tools/gnulib-lib/stpncpy.c并将stpncpy的所有引用更改为stpncpy2

然后运行这些命令

./configure
make
sudo make install

返回PHP源目录:

运行这些命令

cd ext/gettext
phpize
./configure --with-gettext
make
sudo cp modules/gettext.so /usr/lib/php/extensions/no-debug-non-zts-20090626/

并将其添加到php.ini文件中:

extension=gettext.so

参考文献: http://www.ittreats.com/os/php/php-with-intl-and-gettext-on-osx-lion-bertrand-mansion.html

答案 1 :(得分:0)

在brew的帮助下,我可以稍微简单一点地安装gettext。

安装ICU

  • brew install icu4c

安装gettext

  • brew install gettext

构建模块

构建ICU模块

  
    

export PATH = $ PATH:/ usr / local / opt / icu4c / bin

         

./ configure --enable-intl LDFLAGS =' - L / usr / local / opt / icu4c / lib'CPPFLAGS =' - I / usr / local / opt / icu4c / include'

  

可能不需要LD / CPPFLAGS设置。

构建gettext模块

  
    

./ configure --enable-gettext

  

复制生成的模块

将模块复制到php库目录(/ usr / lib / php / extensions / no-debug-non-zts-XXXXX)。

重新启动apache

sudo apachectl restart