2012-08-15 60 views
6

我目前正在开发一个PHP网页应用程序,需要提供法语和英语。我环顾四周,发现Gettext()功能提供了最佳性能。使用Gettext()的PHP web应用程序国际化;

我产生我.POT文件,命令

xgettext PhpFileToTranslate.php -o NameOfTemplateFile.pot 

和successfuly产生.POT文件。 我曾经向PoEdit软件生成messages.po文件和messages.mo创建

这里是我的服务器上的文件:

/app 
    /locale 
     /en_US 
       /LC_MESSAGES 
       messages.po 
       messages.mo 
     /fr_FR 
       /LC_MESSAGES 
       messages.po 
       messages.mo 
     template.pot 

而且我这样设置在PHP文件的语言环境:

$language = $_SESSION['language']; //session contains 'fr_FR.UTF-8' or 'en_US.UTF-8' 
setlocale(LC_ALL, $language); 
bindtextdomain('messages', './locale'); 
textdomain('messages'); 

,但我只看到标签,而不是翻译... 我试着把'fr_FR'而不是'fr_FR.UTF-8'和各种字符串,但它不工作。

我错过了什么吗? 我的服务器是使用Apache和php5的Ubuntu 12.04服务器

回答

7

要在Linux上编译您的.mo文件,您需要在服务器和编译它的计算机上安装语言环境。语言环境是您的操作系统支持的语言。

在本教程中指出:http://dev.jimdo.com/archive-old-blog/tutorial-for-the-easy-use-of-gettext-for-internationalization-of-php-apps/ 确认您已经在Linux的安装语言环境

确保您想要的语言环境使用安装在你的Linux和使用.UTF-8(你要国际化,所以请使用UTF):

# Example for debian 
dpkg-reconfigure locales 

- 在Linux上安装新的语言环境

列表中的语言其实你的系统上安装:

locale -a 

的例子来安装fr_FR目录:

#List the available i18n locales 
less /usr/share/i18n/SUPPORTED 

安装区域(这里fr_FR.utf8)

locale-gen fr_FR.utf8 

重新配置系统的语言环境

sudo dpkg-reconfigure locales 

重新编译.mo文件与PoEdit,应该做的招。 确保在服务器和计算机上安装语言环境编译.mo文件。

希望帮助

+1

确实我没有fr_FR.utf8安装在我的电脑和我的服务器上... 它现在的作品!非常感谢您的帮助。 – 2012-08-15 17:47:35

0

除了什么布鲁诺说,不要忘了重装Apache的配置(例如,服务的Apache2重装)。我浪费了一些时间,发现为什么它不起作用,只是发现一旦安装了新的语言/语言环境后,必须重新加载Apache配置。